grpc 1.7.3 → 1.8.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of grpc might be problematic. Click here for more details.

Files changed (616) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +2106 -2116
  3. data/include/grpc/census.h +1 -432
  4. data/include/grpc/compression.h +9 -9
  5. data/include/grpc/grpc.h +115 -98
  6. data/include/grpc/grpc_cronet.h +3 -3
  7. data/include/grpc/grpc_posix.h +4 -4
  8. data/include/grpc/grpc_security.h +160 -88
  9. data/include/grpc/grpc_security_constants.h +7 -0
  10. data/include/grpc/impl/codegen/atm.h +9 -1
  11. data/include/grpc/impl/codegen/atm_gcc_atomic.h +13 -4
  12. data/include/grpc/impl/codegen/atm_gcc_sync.h +6 -5
  13. data/include/grpc/impl/codegen/atm_windows.h +23 -22
  14. data/include/grpc/impl/codegen/byte_buffer.h +14 -14
  15. data/include/grpc/impl/codegen/byte_buffer_reader.h +2 -2
  16. data/include/grpc/impl/codegen/connectivity_state.h +0 -2
  17. data/include/grpc/impl/codegen/grpc_types.h +32 -28
  18. data/include/grpc/impl/codegen/port_platform.h +48 -0
  19. data/include/grpc/impl/codegen/slice.h +10 -10
  20. data/include/grpc/impl/codegen/sync_generic.h +9 -3
  21. data/include/grpc/slice.h +16 -17
  22. data/include/grpc/slice_buffer.h +22 -22
  23. data/include/grpc/support/alloc.h +11 -11
  24. data/include/grpc/support/avl.h +28 -20
  25. data/include/grpc/support/cmdline.h +13 -13
  26. data/include/grpc/support/histogram.h +17 -17
  27. data/include/grpc/support/host_port.h +2 -2
  28. data/include/grpc/support/log.h +9 -9
  29. data/include/grpc/support/log_windows.h +1 -1
  30. data/include/grpc/support/string_util.h +2 -2
  31. data/include/grpc/support/subprocess.h +5 -5
  32. data/include/grpc/support/sync.h +43 -27
  33. data/include/grpc/support/thd.h +6 -6
  34. data/include/grpc/support/tls_gcc.h +1 -1
  35. data/include/grpc/support/tls_pthread.h +1 -1
  36. data/src/core/ext/census/{grpc_context.c → grpc_context.cc} +5 -8
  37. data/src/core/ext/filters/client_channel/backup_poller.cc +165 -0
  38. data/src/core/ext/{census/grpc_filter.h → filters/client_channel/backup_poller.h} +12 -7
  39. data/src/core/ext/filters/client_channel/{channel_connectivity.c → channel_connectivity.cc} +45 -42
  40. data/src/core/ext/filters/client_channel/{client_channel.c → client_channel.cc} +452 -417
  41. data/src/core/ext/filters/client_channel/client_channel.h +16 -8
  42. data/src/core/ext/filters/client_channel/{client_channel_factory.c → client_channel_factory.cc} +0 -0
  43. data/src/core/ext/filters/client_channel/client_channel_factory.h +29 -21
  44. data/src/core/ext/filters/client_channel/{client_channel_plugin.c → client_channel_plugin.cc} +15 -19
  45. data/src/core/ext/filters/client_channel/{connector.c → connector.cc} +0 -0
  46. data/src/core/ext/filters/client_channel/connector.h +29 -21
  47. data/src/core/ext/filters/client_channel/{http_connect_handshaker.c → http_connect_handshaker.cc} +10 -10
  48. data/src/core/ext/filters/client_channel/http_connect_handshaker.h +8 -0
  49. data/src/core/ext/filters/client_channel/{http_proxy.c → http_proxy.cc} +14 -14
  50. data/src/core/ext/filters/client_channel/http_proxy.h +8 -0
  51. data/src/core/ext/filters/client_channel/{lb_policy.c → lb_policy.cc} +47 -48
  52. data/src/core/ext/filters/client_channel/lb_policy.h +76 -70
  53. data/src/core/ext/filters/client_channel/lb_policy/grpclb/{client_load_reporting_filter.c → client_load_reporting_filter.cc} +28 -29
  54. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +9 -1
  55. data/src/core/ext/filters/client_channel/lb_policy/grpclb/{grpclb.c → grpclb.cc} +554 -563
  56. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +9 -1
  57. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +17 -9
  58. data/src/core/ext/filters/client_channel/lb_policy/grpclb/{grpclb_channel_secure.c → grpclb_channel_secure.cc} +17 -17
  59. data/src/core/ext/filters/client_channel/lb_policy/grpclb/{grpclb_client_stats.c → grpclb_client_stats.cc} +3 -3
  60. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +9 -1
  61. data/src/core/ext/filters/client_channel/lb_policy/grpclb/{load_balancer_api.c → load_balancer_api.cc} +64 -67
  62. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +20 -21
  63. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +599 -0
  64. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +695 -0
  65. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.cc +270 -0
  66. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +153 -0
  67. data/src/core/ext/filters/client_channel/{lb_policy_factory.c → lb_policy_factory.cc} +10 -10
  68. data/src/core/ext/filters/client_channel/lb_policy_factory.h +48 -40
  69. data/src/core/ext/filters/client_channel/{lb_policy_registry.c → lb_policy_registry.cc} +9 -9
  70. data/src/core/ext/filters/client_channel/lb_policy_registry.h +11 -3
  71. data/src/core/ext/filters/client_channel/{parse_address.c → parse_address.cc} +24 -24
  72. data/src/core/ext/filters/client_channel/parse_address.h +14 -6
  73. data/src/core/ext/filters/client_channel/{proxy_mapper.c → proxy_mapper.cc} +0 -0
  74. data/src/core/ext/filters/client_channel/proxy_mapper.h +8 -0
  75. data/src/core/ext/filters/client_channel/{proxy_mapper_registry.c → proxy_mapper_registry.cc} +0 -0
  76. data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +8 -0
  77. data/src/core/ext/filters/client_channel/{resolver.c → resolver.cc} +21 -23
  78. data/src/core/ext/filters/client_channel/resolver.h +33 -27
  79. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/{dns_resolver_ares.c → dns_resolver_ares.cc} +133 -133
  80. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +18 -9
  81. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/{grpc_ares_ev_driver_posix.c → grpc_ares_ev_driver_posix.cc} +58 -56
  82. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/{grpc_ares_wrapper.c → grpc_ares_wrapper.cc} +118 -115
  83. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +23 -15
  84. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +60 -0
  85. data/src/core/ext/filters/client_channel/resolver/dns/native/{dns_resolver.c → dns_resolver.cc} +100 -94
  86. data/src/core/ext/filters/client_channel/resolver/fake/{fake_resolver.c → fake_resolver.cc} +14 -14
  87. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +9 -1
  88. data/src/core/ext/filters/client_channel/resolver/sockaddr/{sockaddr_resolver.c → sockaddr_resolver.cc} +60 -60
  89. data/src/core/ext/filters/client_channel/{resolver_factory.c → resolver_factory.cc} +2 -2
  90. data/src/core/ext/filters/client_channel/resolver_factory.h +27 -19
  91. data/src/core/ext/filters/client_channel/{resolver_registry.c → resolver_registry.cc} +35 -35
  92. data/src/core/ext/filters/client_channel/resolver_registry.h +18 -10
  93. data/src/core/ext/filters/client_channel/{retry_throttle.c → retry_throttle.cc} +10 -10
  94. data/src/core/ext/filters/client_channel/retry_throttle.h +8 -0
  95. data/src/core/ext/filters/client_channel/{subchannel.c → subchannel.cc} +210 -213
  96. data/src/core/ext/filters/client_channel/subchannel.h +68 -60
  97. data/src/core/ext/filters/client_channel/{subchannel_index.c → subchannel_index.cc} +52 -52
  98. data/src/core/ext/filters/client_channel/subchannel_index.h +22 -14
  99. data/src/core/ext/filters/client_channel/{uri_parser.c → uri_parser.cc} +29 -27
  100. data/src/core/ext/filters/client_channel/uri_parser.h +18 -10
  101. data/src/core/ext/filters/deadline/{deadline_filter.c → deadline_filter.cc} +12 -15
  102. data/src/core/ext/filters/deadline/deadline_filter.h +11 -2
  103. data/src/core/ext/filters/http/client/{http_client_filter.c → http_client_filter.cc} +83 -83
  104. data/src/core/ext/filters/http/client/http_client_filter.h +8 -0
  105. data/src/core/ext/filters/http/{http_filters_plugin.c → http_filters_plugin.cc} +20 -21
  106. data/src/core/ext/filters/http/message_compress/{message_compress_filter.c → message_compress_filter.cc} +84 -83
  107. data/src/core/ext/filters/http/message_compress/message_compress_filter.h +9 -1
  108. data/src/core/ext/filters/http/server/{http_server_filter.c → http_server_filter.cc} +80 -78
  109. data/src/core/ext/filters/http/server/http_server_filter.h +8 -0
  110. data/src/core/ext/filters/load_reporting/{server_load_reporting_filter.c → server_load_reporting_filter.cc} +29 -29
  111. data/src/core/ext/filters/load_reporting/server_load_reporting_filter.h +9 -1
  112. data/src/core/ext/filters/load_reporting/{server_load_reporting_plugin.c → server_load_reporting_plugin.cc} +11 -11
  113. data/src/core/ext/filters/load_reporting/server_load_reporting_plugin.h +13 -5
  114. data/src/core/ext/filters/max_age/{max_age_filter.c → max_age_filter.cc} +46 -56
  115. data/src/core/ext/filters/max_age/max_age_filter.h +8 -0
  116. data/src/core/ext/filters/message_size/{message_size_filter.c → message_size_filter.cc} +62 -40
  117. data/src/core/ext/filters/message_size/message_size_filter.h +8 -0
  118. data/src/core/ext/filters/workarounds/{workaround_cronet_compression_filter.c → workaround_cronet_compression_filter.cc} +11 -11
  119. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h +8 -0
  120. data/src/core/ext/filters/workarounds/{workaround_utils.c → workaround_utils.cc} +7 -7
  121. data/src/core/ext/filters/workarounds/workaround_utils.h +9 -1
  122. data/src/core/ext/transport/chttp2/alpn/{alpn.c → alpn.cc} +3 -3
  123. data/src/core/ext/transport/chttp2/alpn/alpn.h +10 -2
  124. data/src/core/ext/transport/chttp2/client/{chttp2_connector.c → chttp2_connector.cc} +49 -45
  125. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +8 -0
  126. data/src/core/ext/transport/chttp2/client/insecure/{channel_create.c → channel_create.cc} +28 -27
  127. data/src/core/ext/transport/chttp2/client/insecure/{channel_create_posix.c → channel_create_posix.cc} +14 -13
  128. data/src/core/ext/transport/chttp2/client/secure/{secure_channel_create.c → secure_channel_create.cc} +68 -66
  129. data/src/core/ext/transport/chttp2/server/{chttp2_server.c → chttp2_server.cc} +76 -77
  130. data/src/core/ext/transport/chttp2/server/chttp2_server.h +11 -3
  131. data/src/core/ext/transport/chttp2/server/insecure/{server_chttp2.c → server_chttp2.cc} +3 -3
  132. data/src/core/ext/transport/chttp2/server/insecure/{server_chttp2_posix.c → server_chttp2_posix.cc} +13 -12
  133. data/src/core/ext/transport/chttp2/server/secure/{server_secure_chttp2.c → server_secure_chttp2.cc} +12 -10
  134. data/src/core/ext/transport/chttp2/transport/{bin_decoder.c → bin_decoder.cc} +7 -7
  135. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +15 -7
  136. data/src/core/ext/transport/chttp2/transport/{bin_encoder.c → bin_encoder.cc} +11 -11
  137. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +8 -0
  138. data/src/core/ext/transport/chttp2/transport/{chttp2_plugin.c → chttp2_plugin.cc} +2 -9
  139. data/src/core/ext/transport/chttp2/transport/{chttp2_transport.c → chttp2_transport.cc} +778 -778
  140. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +14 -10
  141. data/src/core/ext/transport/chttp2/transport/flow_control.cc +385 -0
  142. data/src/core/ext/transport/chttp2/transport/flow_control.h +337 -0
  143. data/src/core/ext/transport/chttp2/transport/frame.h +8 -0
  144. data/src/core/ext/transport/chttp2/transport/{frame_data.c → frame_data.cc} +34 -34
  145. data/src/core/ext/transport/chttp2/transport/frame_data.h +25 -17
  146. data/src/core/ext/transport/chttp2/transport/{frame_goaway.c → frame_goaway.cc} +18 -18
  147. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +18 -10
  148. data/src/core/ext/transport/chttp2/transport/{frame_ping.c → frame_ping.cc} +18 -19
  149. data/src/core/ext/transport/chttp2/transport/frame_ping.h +12 -4
  150. data/src/core/ext/transport/chttp2/transport/{frame_rst_stream.c → frame_rst_stream.cc} +16 -16
  151. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +16 -8
  152. data/src/core/ext/transport/chttp2/transport/{frame_settings.c → frame_settings.cc} +23 -24
  153. data/src/core/ext/transport/chttp2/transport/frame_settings.h +17 -9
  154. data/src/core/ext/transport/chttp2/transport/{frame_window_update.c → frame_window_update.cc} +22 -24
  155. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +14 -6
  156. data/src/core/ext/transport/chttp2/transport/{hpack_encoder.c → hpack_encoder.cc} +206 -161
  157. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +23 -13
  158. data/src/core/ext/transport/chttp2/transport/{hpack_parser.c → hpack_parser.cc} +340 -334
  159. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +30 -22
  160. data/src/core/ext/transport/chttp2/transport/{hpack_table.c → hpack_table.cc} +25 -25
  161. data/src/core/ext/transport/chttp2/transport/hpack_table.h +19 -11
  162. data/src/core/ext/transport/chttp2/transport/{http2_settings.c → http2_settings.cc} +1 -1
  163. data/src/core/ext/transport/chttp2/transport/http2_settings.h +10 -2
  164. data/src/core/ext/transport/chttp2/transport/{huffsyms.c → huffsyms.cc} +0 -0
  165. data/src/core/ext/transport/chttp2/transport/huffsyms.h +8 -0
  166. data/src/core/ext/transport/chttp2/transport/{incoming_metadata.c → incoming_metadata.cc} +14 -13
  167. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +18 -10
  168. data/src/core/ext/transport/chttp2/transport/internal.h +214 -340
  169. data/src/core/ext/transport/chttp2/transport/{parsing.c → parsing.cc} +152 -141
  170. data/src/core/ext/transport/chttp2/transport/{stream_lists.c → stream_lists.cc} +53 -53
  171. data/src/core/ext/transport/chttp2/transport/{stream_map.c → stream_map.cc} +35 -34
  172. data/src/core/ext/transport/chttp2/transport/stream_map.h +22 -14
  173. data/src/core/ext/transport/chttp2/transport/{varint.c → varint.cc} +0 -0
  174. data/src/core/ext/transport/chttp2/transport/varint.h +8 -0
  175. data/src/core/ext/transport/chttp2/transport/writing.cc +636 -0
  176. data/src/core/ext/transport/inproc/{inproc_plugin.c → inproc_plugin.cc} +5 -6
  177. data/src/core/ext/transport/inproc/{inproc_transport.c → inproc_transport.cc} +479 -544
  178. data/src/core/ext/transport/inproc/inproc_transport.h +4 -4
  179. data/src/core/lib/backoff/backoff.cc +80 -0
  180. data/src/core/lib/backoff/backoff.h +83 -0
  181. data/src/core/lib/channel/{channel_args.c → channel_args.cc} +92 -92
  182. data/src/core/lib/channel/channel_args.h +45 -37
  183. data/src/core/lib/channel/{channel_stack.c → channel_stack.cc} +67 -68
  184. data/src/core/lib/channel/channel_stack.h +76 -75
  185. data/src/core/lib/channel/{channel_stack_builder.c → channel_stack_builder.cc} +91 -91
  186. data/src/core/lib/channel/channel_stack_builder.h +45 -45
  187. data/src/core/lib/channel/{connected_channel.c → connected_channel.cc} +70 -70
  188. data/src/core/lib/channel/connected_channel.h +12 -4
  189. data/src/core/lib/channel/context.h +2 -2
  190. data/src/core/lib/channel/{handshaker.c → handshaker.cc} +7 -9
  191. data/src/core/lib/channel/handshaker.h +9 -1
  192. data/src/core/lib/channel/{handshaker_factory.c → handshaker_factory.cc} +7 -7
  193. data/src/core/lib/channel/handshaker_factory.h +18 -10
  194. data/src/core/lib/channel/{handshaker_registry.c → handshaker_registry.cc} +0 -0
  195. data/src/core/lib/channel/handshaker_registry.h +8 -0
  196. data/src/core/lib/compression/algorithm_metadata.h +8 -0
  197. data/src/core/lib/compression/{compression.c → compression.cc} +9 -9
  198. data/src/core/lib/compression/{message_compress.c → message_compress.cc} +0 -0
  199. data/src/core/lib/compression/message_compress.h +8 -0
  200. data/src/core/lib/compression/{stream_compression.c → stream_compression.cc} +12 -12
  201. data/src/core/lib/compression/stream_compression.h +27 -19
  202. data/src/core/lib/compression/{stream_compression_gzip.c → stream_compression_gzip.cc} +35 -36
  203. data/src/core/lib/compression/stream_compression_gzip.h +8 -0
  204. data/src/core/lib/compression/{stream_compression_identity.c → stream_compression_identity.cc} +19 -20
  205. data/src/core/lib/compression/stream_compression_identity.h +8 -0
  206. data/src/core/lib/debug/{stats.c → stats.cc} +19 -19
  207. data/src/core/lib/debug/stats.h +17 -9
  208. data/src/core/lib/debug/{stats_data.c → stats_data.cc} +45 -22
  209. data/src/core/lib/debug/stats_data.h +58 -19
  210. data/src/core/lib/debug/trace.cc +142 -0
  211. data/src/core/lib/debug/trace.h +74 -14
  212. data/src/core/lib/http/{format_request.c → format_request.cc} +10 -10
  213. data/src/core/lib/http/format_request.h +12 -4
  214. data/src/core/lib/http/{httpcli.c → httpcli.cc} +80 -80
  215. data/src/core/lib/http/httpcli.h +41 -33
  216. data/src/core/lib/http/{httpcli_security_connector.c → httpcli_security_connector.cc} +69 -55
  217. data/src/core/lib/http/{parser.c → parser.cc} +42 -42
  218. data/src/core/lib/http/parser.h +28 -20
  219. data/src/core/lib/{support → iomgr}/block_annotate.h +17 -8
  220. data/src/core/lib/iomgr/{call_combiner.c → call_combiner.cc} +29 -17
  221. data/src/core/lib/iomgr/call_combiner.h +9 -1
  222. data/src/core/lib/iomgr/closure.h +220 -62
  223. data/src/core/lib/iomgr/{combiner.c → combiner.cc} +63 -62
  224. data/src/core/lib/iomgr/combiner.h +16 -8
  225. data/src/core/lib/iomgr/{endpoint.c → endpoint.cc} +6 -0
  226. data/src/core/lib/iomgr/endpoint.h +47 -32
  227. data/src/core/lib/iomgr/endpoint_pair.h +12 -4
  228. data/src/core/lib/iomgr/{endpoint_pair_posix.c → endpoint_pair_posix.cc} +3 -3
  229. data/src/core/lib/iomgr/{endpoint_pair_uv.c → endpoint_pair_uv.cc} +2 -2
  230. data/src/core/lib/iomgr/{endpoint_pair_windows.c → endpoint_pair_windows.cc} +6 -6
  231. data/src/core/lib/iomgr/{error.c → error.cc} +125 -124
  232. data/src/core/lib/iomgr/error.h +32 -27
  233. data/src/core/lib/iomgr/error_internal.h +11 -2
  234. data/src/core/lib/iomgr/{ev_epoll1_linux.c → ev_epoll1_linux.cc} +214 -215
  235. data/src/core/lib/iomgr/ev_epoll1_linux.h +9 -1
  236. data/src/core/lib/iomgr/ev_epollex_linux.cc +1488 -0
  237. data/src/core/lib/iomgr/ev_epollex_linux.h +9 -1
  238. data/src/core/lib/iomgr/{ev_epollsig_linux.c → ev_epollsig_linux.cc} +304 -305
  239. data/src/core/lib/iomgr/ev_epollsig_linux.h +12 -4
  240. data/src/core/lib/iomgr/{ev_poll_posix.c → ev_poll_posix.cc} +272 -283
  241. data/src/core/lib/iomgr/ev_poll_posix.h +10 -2
  242. data/src/core/lib/iomgr/ev_posix.cc +288 -0
  243. data/src/core/lib/iomgr/ev_posix.h +75 -67
  244. data/src/core/lib/iomgr/{ev_windows.c → ev_windows.cc} +2 -2
  245. data/src/core/lib/iomgr/exec_ctx.cc +177 -0
  246. data/src/core/lib/iomgr/exec_ctx.h +35 -13
  247. data/src/core/lib/iomgr/{executor.c → executor.cc} +34 -35
  248. data/src/core/lib/iomgr/executor.h +12 -4
  249. data/src/core/lib/iomgr/{fork_posix.c → fork_posix.cc} +0 -0
  250. data/src/core/lib/iomgr/{fork_windows.c → fork_windows.cc} +0 -0
  251. data/src/core/lib/iomgr/gethostname.h +9 -1
  252. data/src/core/lib/iomgr/{gethostname_fallback.c → gethostname_fallback.cc} +2 -1
  253. data/src/core/lib/iomgr/{gethostname_host_name_max.c → gethostname_host_name_max.cc} +4 -3
  254. data/src/core/lib/iomgr/{gethostname_sysconf.c → gethostname_sysconf.cc} +3 -2
  255. data/src/core/lib/iomgr/{iocp_windows.c → iocp_windows.cc} +23 -25
  256. data/src/core/lib/iomgr/iocp_windows.h +17 -3
  257. data/src/core/lib/iomgr/{iomgr.c → iomgr.cc} +25 -19
  258. data/src/core/lib/iomgr/iomgr.h +11 -3
  259. data/src/core/lib/iomgr/iomgr_internal.h +13 -5
  260. data/src/core/lib/iomgr/{iomgr_posix.c → iomgr_posix.cc} +0 -1
  261. data/src/core/lib/iomgr/{iomgr_uv.c → iomgr_uv.cc} +1 -1
  262. data/src/core/lib/iomgr/iomgr_uv.h +8 -0
  263. data/src/core/lib/iomgr/{iomgr_windows.c → iomgr_windows.cc} +0 -0
  264. data/src/core/lib/iomgr/{is_epollexclusive_available.c → is_epollexclusive_available.cc} +1 -1
  265. data/src/core/lib/iomgr/is_epollexclusive_available.h +8 -0
  266. data/src/core/lib/iomgr/{load_file.c → load_file.cc} +12 -12
  267. data/src/core/lib/iomgr/load_file.h +2 -2
  268. data/src/core/lib/iomgr/{lockfree_event.c → lockfree_event.cc} +76 -68
  269. data/src/core/lib/iomgr/lockfree_event.h +30 -11
  270. data/src/core/lib/iomgr/{network_status_tracker.c → network_status_tracker.cc} +3 -2
  271. data/src/core/lib/iomgr/network_status_tracker.h +2 -2
  272. data/src/core/lib/iomgr/{polling_entity.c → polling_entity.cc} +18 -18
  273. data/src/core/lib/iomgr/polling_entity.h +21 -13
  274. data/src/core/lib/iomgr/pollset.h +17 -11
  275. data/src/core/lib/iomgr/pollset_set.h +23 -15
  276. data/src/core/lib/iomgr/{pollset_set_uv.c → pollset_set_uv.cc} +0 -0
  277. data/src/core/lib/iomgr/{pollset_set_windows.c → pollset_set_windows.cc} +0 -0
  278. data/src/core/lib/iomgr/{pollset_uv.c → pollset_uv.cc} +31 -29
  279. data/src/core/lib/iomgr/pollset_uv.h +8 -0
  280. data/src/core/lib/iomgr/{pollset_windows.c → pollset_windows.cc} +24 -24
  281. data/src/core/lib/iomgr/pollset_windows.h +17 -4
  282. data/src/core/lib/iomgr/port.h +10 -0
  283. data/src/core/lib/iomgr/resolve_address.h +18 -10
  284. data/src/core/lib/iomgr/{resolve_address_posix.c → resolve_address_posix.cc} +40 -40
  285. data/src/core/lib/iomgr/{resolve_address_uv.c → resolve_address_uv.cc} +61 -56
  286. data/src/core/lib/iomgr/{resolve_address_windows.c → resolve_address_windows.cc} +36 -34
  287. data/src/core/lib/iomgr/{resource_quota.c → resource_quota.cc} +209 -180
  288. data/src/core/lib/iomgr/resource_quota.h +45 -37
  289. data/src/core/lib/iomgr/{sockaddr_utils.c → sockaddr_utils.cc} +61 -61
  290. data/src/core/lib/iomgr/sockaddr_utils.h +23 -15
  291. data/src/core/lib/iomgr/sockaddr_windows.h +6 -0
  292. data/src/core/lib/iomgr/{socket_factory_posix.c → socket_factory_posix.cc} +20 -20
  293. data/src/core/lib/iomgr/socket_factory_posix.h +15 -15
  294. data/src/core/lib/iomgr/{socket_mutator.c → socket_mutator.cc} +18 -18
  295. data/src/core/lib/iomgr/socket_mutator.h +11 -11
  296. data/src/core/lib/iomgr/socket_utils.h +9 -1
  297. data/src/core/lib/iomgr/{socket_utils_common_posix.c → socket_utils_common_posix.cc} +28 -28
  298. data/src/core/lib/iomgr/{socket_utils_linux.c → socket_utils_linux.cc} +3 -3
  299. data/src/core/lib/iomgr/{socket_utils_posix.c → socket_utils_posix.cc} +3 -3
  300. data/src/core/lib/iomgr/socket_utils_posix.h +26 -18
  301. data/src/core/lib/iomgr/{socket_utils_uv.c → socket_utils_uv.cc} +1 -1
  302. data/src/core/lib/iomgr/{socket_utils_windows.c → socket_utils_windows.cc} +2 -2
  303. data/src/core/lib/iomgr/{socket_windows.c → socket_windows.cc} +18 -18
  304. data/src/core/lib/iomgr/socket_windows.h +26 -13
  305. data/src/core/lib/iomgr/tcp_client.h +14 -6
  306. data/src/core/lib/iomgr/{tcp_client_posix.c → tcp_client_posix.cc} +69 -70
  307. data/src/core/lib/iomgr/tcp_client_posix.h +11 -3
  308. data/src/core/lib/iomgr/{tcp_client_uv.c → tcp_client_uv.cc} +47 -48
  309. data/src/core/lib/iomgr/{tcp_client_windows.c → tcp_client_windows.cc} +46 -44
  310. data/src/core/lib/iomgr/{tcp_posix.c → tcp_posix.cc} +198 -175
  311. data/src/core/lib/iomgr/tcp_posix.h +15 -7
  312. data/src/core/lib/iomgr/tcp_server.h +31 -23
  313. data/src/core/lib/iomgr/{tcp_server_posix.c → tcp_server_posix.cc} +78 -77
  314. data/src/core/lib/iomgr/tcp_server_utils_posix.h +27 -19
  315. data/src/core/lib/iomgr/{tcp_server_utils_posix_common.c → tcp_server_utils_posix_common.cc} +27 -27
  316. data/src/core/lib/iomgr/{tcp_server_utils_posix_ifaddrs.c → tcp_server_utils_posix_ifaddrs.cc} +25 -25
  317. data/src/core/lib/iomgr/{tcp_server_utils_posix_noifaddrs.c → tcp_server_utils_posix_noifaddrs.cc} +2 -2
  318. data/src/core/lib/iomgr/{tcp_server_uv.c → tcp_server_uv.cc} +133 -105
  319. data/src/core/lib/iomgr/{tcp_server_windows.c → tcp_server_windows.cc} +81 -77
  320. data/src/core/lib/iomgr/tcp_uv.cc +420 -0
  321. data/src/core/lib/iomgr/tcp_uv.h +18 -4
  322. data/src/core/lib/iomgr/{tcp_windows.c → tcp_windows.cc} +90 -79
  323. data/src/core/lib/iomgr/tcp_windows.h +17 -4
  324. data/src/core/lib/iomgr/{time_averaged_stats.c → time_averaged_stats.cc} +0 -0
  325. data/src/core/lib/iomgr/time_averaged_stats.h +8 -0
  326. data/src/core/lib/iomgr/timer.h +16 -9
  327. data/src/core/lib/iomgr/{timer_generic.c → timer_generic.cc} +130 -171
  328. data/src/core/lib/iomgr/timer_generic.h +4 -4
  329. data/src/core/lib/iomgr/{timer_heap.c → timer_heap.cc} +20 -21
  330. data/src/core/lib/iomgr/timer_heap.h +16 -8
  331. data/src/core/lib/iomgr/{timer_manager.c → timer_manager.cc} +54 -52
  332. data/src/core/lib/iomgr/timer_manager.h +8 -0
  333. data/src/core/lib/iomgr/{timer_uv.c → timer_uv.cc} +22 -24
  334. data/src/core/lib/iomgr/timer_uv.h +2 -2
  335. data/src/core/lib/iomgr/{udp_server.c → udp_server.cc} +75 -75
  336. data/src/core/lib/iomgr/udp_server.h +25 -17
  337. data/src/core/lib/iomgr/{unix_sockets_posix.c → unix_sockets_posix.cc} +22 -21
  338. data/src/core/lib/iomgr/unix_sockets_posix.h +14 -6
  339. data/src/core/lib/iomgr/{unix_sockets_posix_noop.c → unix_sockets_posix_noop.cc} +5 -5
  340. data/src/core/lib/iomgr/{wakeup_fd_cv.c → wakeup_fd_cv.cc} +2 -2
  341. data/src/core/lib/iomgr/wakeup_fd_cv.h +10 -0
  342. data/src/core/lib/iomgr/{wakeup_fd_eventfd.c → wakeup_fd_eventfd.cc} +0 -0
  343. data/src/core/lib/iomgr/{wakeup_fd_nospecial.c → wakeup_fd_nospecial.cc} +0 -0
  344. data/src/core/lib/iomgr/{wakeup_fd_pipe.c → wakeup_fd_pipe.cc} +1 -0
  345. data/src/core/lib/iomgr/wakeup_fd_pipe.h +9 -1
  346. data/src/core/lib/iomgr/{wakeup_fd_posix.c → wakeup_fd_posix.cc} +6 -7
  347. data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -0
  348. data/src/core/lib/json/{json.c → json.cc} +0 -0
  349. data/src/core/lib/json/json.h +8 -0
  350. data/src/core/lib/json/{json_reader.c → json_reader.cc} +18 -18
  351. data/src/core/lib/json/json_reader.h +26 -18
  352. data/src/core/lib/json/{json_string.c → json_string.cc} +57 -57
  353. data/src/core/lib/json/{json_writer.c → json_writer.cc} +20 -20
  354. data/src/core/lib/json/json_writer.h +23 -15
  355. data/src/core/lib/profiling/{basic_timers.c → basic_timers.cc} +34 -34
  356. data/src/core/lib/profiling/{stap_timers.c → stap_timers.cc} +5 -5
  357. data/src/core/lib/profiling/timers.h +6 -6
  358. data/src/core/lib/security/context/{security_context.c → security_context.cc} +98 -95
  359. data/src/core/lib/security/context/security_context.h +27 -29
  360. data/src/core/lib/security/credentials/composite/{composite_credentials.c → composite_credentials.cc} +79 -73
  361. data/src/core/lib/security/credentials/composite/composite_credentials.h +17 -9
  362. data/src/core/lib/security/credentials/{credentials.c → credentials.cc} +97 -92
  363. data/src/core/lib/security/credentials/credentials.h +83 -75
  364. data/src/core/lib/security/credentials/{credentials_metadata.c → credentials_metadata.cc} +7 -6
  365. data/src/core/lib/security/credentials/fake/{fake_credentials.c → fake_credentials.cc} +39 -36
  366. data/src/core/lib/security/credentials/fake/fake_credentials.h +13 -5
  367. data/src/core/lib/security/credentials/google_default/{credentials_generic.c → credentials_generic.cc} +5 -5
  368. data/src/core/lib/security/credentials/google_default/{google_default_credentials.c → google_default_credentials.cc} +55 -55
  369. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +9 -1
  370. data/src/core/lib/security/credentials/iam/{iam_credentials.c → iam_credentials.cc} +19 -18
  371. data/src/core/lib/security/credentials/jwt/{json_token.c → json_token.cc} +80 -75
  372. data/src/core/lib/security/credentials/jwt/json_token.h +23 -15
  373. data/src/core/lib/security/credentials/jwt/{jwt_credentials.c → jwt_credentials.cc} +45 -41
  374. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +11 -3
  375. data/src/core/lib/security/credentials/jwt/{jwt_verifier.c → jwt_verifier.cc} +262 -252
  376. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +38 -30
  377. data/src/core/lib/security/credentials/oauth2/{oauth2_credentials.c → oauth2_credentials.cc} +138 -141
  378. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +30 -22
  379. data/src/core/lib/security/credentials/plugin/{plugin_credentials.c → plugin_credentials.cc} +52 -53
  380. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +7 -7
  381. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +344 -0
  382. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +27 -0
  383. data/src/core/lib/security/transport/auth_filters.h +16 -0
  384. data/src/core/lib/security/transport/{client_auth_filter.c → client_auth_filter.cc} +127 -115
  385. data/src/core/lib/security/transport/{lb_targets_info.c → lb_targets_info.cc} +16 -13
  386. data/src/core/lib/security/transport/lb_targets_info.h +11 -3
  387. data/src/core/lib/security/transport/{secure_endpoint.c → secure_endpoint.cc} +84 -76
  388. data/src/core/lib/security/transport/secure_endpoint.h +13 -5
  389. data/src/core/lib/security/transport/security_connector.cc +1121 -0
  390. data/src/core/lib/security/transport/security_connector.h +97 -79
  391. data/src/core/lib/security/transport/{security_handshaker.c → security_handshaker.cc} +139 -132
  392. data/src/core/lib/security/transport/security_handshaker.h +11 -3
  393. data/src/core/lib/security/transport/{server_auth_filter.c → server_auth_filter.cc} +68 -68
  394. data/src/core/lib/security/transport/{tsi_error.c → tsi_error.cc} +1 -1
  395. data/src/core/lib/security/transport/tsi_error.h +9 -1
  396. data/src/core/lib/security/util/{json_util.c → json_util.cc} +11 -11
  397. data/src/core/lib/security/util/json_util.h +12 -4
  398. data/src/core/lib/slice/{b64.c → b64.cc} +15 -15
  399. data/src/core/lib/slice/b64.h +12 -4
  400. data/src/core/lib/slice/{percent_encoding.c → percent_encoding.cc} +15 -15
  401. data/src/core/lib/slice/percent_encoding.h +11 -3
  402. data/src/core/lib/slice/{slice.c → slice.cc} +64 -64
  403. data/src/core/lib/slice/{slice_buffer.c → slice_buffer.cc} +38 -38
  404. data/src/core/lib/slice/{slice_hash_table.c → slice_hash_table.cc} +7 -7
  405. data/src/core/lib/slice/slice_hash_table.h +19 -11
  406. data/src/core/lib/slice/{slice_intern.c → slice_intern.cc} +35 -34
  407. data/src/core/lib/slice/slice_internal.h +17 -6
  408. data/src/core/lib/slice/{slice_string_helpers.c → slice_string_helpers.cc} +9 -9
  409. data/src/core/lib/slice/slice_string_helpers.h +3 -3
  410. data/src/core/lib/support/abstract.h +29 -0
  411. data/src/core/lib/support/{alloc.c → alloc.cc} +22 -22
  412. data/src/core/lib/support/{arena.c → arena.cc} +12 -12
  413. data/src/core/lib/support/arena.h +11 -3
  414. data/src/core/lib/support/{atm.c → atm.cc} +1 -1
  415. data/src/core/lib/support/{avl.c → avl.cc} +71 -70
  416. data/src/core/lib/support/{cmdline.c → cmdline.cc} +62 -62
  417. data/src/core/lib/support/{cpu_iphone.c → cpu_iphone.cc} +2 -0
  418. data/src/core/lib/support/{cpu_linux.c → cpu_linux.cc} +10 -0
  419. data/src/core/lib/support/{cpu_posix.c → cpu_posix.cc} +27 -4
  420. data/src/core/lib/support/{cpu_windows.c → cpu_windows.cc} +1 -0
  421. data/src/core/lib/support/env.h +3 -3
  422. data/src/core/lib/support/{env_linux.c → env_linux.cc} +11 -11
  423. data/src/core/lib/support/{env_posix.c → env_posix.cc} +4 -4
  424. data/src/core/lib/support/{env_windows.c → env_windows.cc} +5 -5
  425. data/src/core/lib/support/{fork.c → fork.cc} +2 -2
  426. data/src/core/lib/support/{histogram.c → histogram.cc} +25 -26
  427. data/src/core/lib/support/{host_port.c → host_port.cc} +16 -16
  428. data/src/core/lib/support/{log.c → log.cc} +8 -8
  429. data/src/core/lib/support/{log_android.c → log_android.cc} +7 -7
  430. data/src/core/lib/support/{log_linux.c → log_linux.cc} +8 -8
  431. data/src/core/lib/support/{log_posix.c → log_posix.cc} +9 -10
  432. data/src/core/lib/support/{log_windows.c → log_windows.cc} +7 -7
  433. data/src/core/lib/support/manual_constructor.h +211 -0
  434. data/src/core/lib/support/memory.h +41 -0
  435. data/src/core/lib/support/mpscq.cc +114 -0
  436. data/src/core/lib/support/mpscq.h +45 -7
  437. data/src/core/lib/support/{murmur_hash.c → murmur_hash.cc} +9 -12
  438. data/src/core/lib/support/murmur_hash.h +9 -1
  439. data/src/core/lib/support/spinlock.h +8 -1
  440. data/src/core/lib/support/{string.c → string.cc} +56 -55
  441. data/src/core/lib/support/string.h +21 -21
  442. data/src/core/lib/support/{string_posix.c → string_posix.cc} +5 -4
  443. data/src/core/lib/support/{string_util_windows.c → string_util_windows.cc} +9 -6
  444. data/src/core/lib/support/{string_windows.c → string_windows.cc} +3 -2
  445. data/src/core/lib/support/string_windows.h +8 -0
  446. data/src/core/lib/support/{subprocess_posix.c → subprocess_posix.cc} +13 -13
  447. data/src/core/lib/support/{subprocess_windows.c → subprocess_windows.cc} +9 -9
  448. data/src/core/lib/support/{sync.c → sync.cc} +22 -22
  449. data/src/core/lib/support/{sync_posix.c → sync_posix.cc} +6 -2
  450. data/src/core/lib/support/{sync_windows.c → sync_windows.cc} +14 -14
  451. data/src/core/lib/support/{thd.c → thd.cc} +0 -0
  452. data/src/core/lib/support/{thd_posix.c → thd_posix.cc} +10 -10
  453. data/src/core/lib/support/{thd_windows.c → thd_windows.cc} +10 -10
  454. data/src/core/lib/support/{time.c → time.cc} +0 -0
  455. data/src/core/lib/support/{time_posix.c → time_posix.cc} +5 -6
  456. data/src/core/lib/support/{time_precise.c → time_precise.cc} +6 -4
  457. data/src/core/lib/support/time_precise.h +9 -1
  458. data/src/core/lib/support/{time_windows.c → time_windows.cc} +2 -3
  459. data/src/core/lib/support/{tls_pthread.c → tls_pthread.cc} +2 -2
  460. data/src/core/lib/support/tmpfile.h +1 -1
  461. data/src/core/lib/support/{tmpfile_msys.c → tmpfile_msys.cc} +2 -2
  462. data/src/core/lib/support/{tmpfile_posix.c → tmpfile_posix.cc} +7 -7
  463. data/src/core/lib/support/{tmpfile_windows.c → tmpfile_windows.cc} +2 -2
  464. data/src/core/lib/support/{wrap_memcpy.c → wrap_memcpy.cc} +4 -2
  465. data/src/core/lib/surface/{alarm.c → alarm.cc} +32 -31
  466. data/src/core/lib/surface/alarm_internal.h +10 -2
  467. data/src/core/lib/surface/{api_trace.c → api_trace.cc} +1 -1
  468. data/src/core/lib/surface/api_trace.h +2 -2
  469. data/src/core/lib/surface/{byte_buffer.c → byte_buffer.cc} +13 -13
  470. data/src/core/lib/surface/{byte_buffer_reader.c → byte_buffer_reader.cc} +9 -9
  471. data/src/core/lib/surface/{call.c → call.cc} +379 -372
  472. data/src/core/lib/surface/call.h +37 -38
  473. data/src/core/lib/surface/{call_details.c → call_details.cc} +0 -0
  474. data/src/core/lib/surface/{call_log_batch.c → call_log_batch.cc} +13 -11
  475. data/src/core/lib/surface/call_test_only.h +5 -5
  476. data/src/core/lib/surface/{channel.c → channel.cc} +94 -95
  477. data/src/core/lib/surface/channel.h +29 -21
  478. data/src/core/lib/surface/{channel_init.c → channel_init.cc} +13 -13
  479. data/src/core/lib/surface/channel_init.h +6 -6
  480. data/src/core/lib/surface/{channel_ping.c → channel_ping.cc} +12 -12
  481. data/src/core/lib/surface/{channel_stack_type.c → channel_stack_type.cc} +1 -1
  482. data/src/core/lib/surface/channel_stack_type.h +9 -1
  483. data/src/core/lib/surface/{completion_queue.c → completion_queue.cc} +416 -379
  484. data/src/core/lib/surface/completion_queue.h +29 -29
  485. data/src/core/lib/surface/{completion_queue_factory.c → completion_queue_factory.cc} +1 -1
  486. data/src/core/lib/surface/completion_queue_factory.h +8 -0
  487. data/src/core/lib/surface/{event_string.c → event_string.cc} +9 -9
  488. data/src/core/lib/surface/event_string.h +9 -1
  489. data/src/core/lib/surface/{init.c → init.cc} +16 -39
  490. data/src/core/lib/surface/init.h +8 -0
  491. data/src/core/lib/surface/{init_secure.c → init_secure.cc} +12 -25
  492. data/src/core/lib/surface/lame_client.cc +38 -40
  493. data/src/core/lib/surface/lame_client.h +8 -0
  494. data/src/core/lib/surface/{metadata_array.c → metadata_array.cc} +0 -0
  495. data/src/core/lib/surface/{server.c → server.cc} +340 -404
  496. data/src/core/lib/surface/server.h +22 -14
  497. data/src/core/lib/surface/{validate_metadata.c → validate_metadata.cc} +10 -9
  498. data/src/core/lib/surface/validate_metadata.h +10 -2
  499. data/src/core/lib/surface/{version.c → version.cc} +2 -2
  500. data/src/core/lib/transport/bdp_estimator.cc +84 -0
  501. data/src/core/lib/transport/bdp_estimator.h +67 -42
  502. data/src/core/lib/transport/{byte_stream.c → byte_stream.cc} +51 -51
  503. data/src/core/lib/transport/byte_stream.h +41 -33
  504. data/src/core/lib/transport/{connectivity_state.c → connectivity_state.cc} +36 -40
  505. data/src/core/lib/transport/connectivity_state.h +29 -21
  506. data/src/core/lib/transport/{error_utils.c → error_utils.cc} +26 -22
  507. data/src/core/lib/transport/error_utils.h +18 -6
  508. data/src/core/lib/transport/{metadata.c → metadata.cc} +92 -88
  509. data/src/core/lib/transport/metadata.h +22 -20
  510. data/src/core/lib/transport/{metadata_batch.c → metadata_batch.cc} +78 -79
  511. data/src/core/lib/transport/metadata_batch.h +46 -45
  512. data/src/core/lib/transport/pid_controller.cc +48 -0
  513. data/src/core/lib/transport/pid_controller.h +84 -32
  514. data/src/core/lib/transport/{service_config.c → service_config.cc} +66 -48
  515. data/src/core/lib/transport/service_config.h +11 -2
  516. data/src/core/lib/transport/{static_metadata.c → static_metadata.cc} +2 -2
  517. data/src/core/lib/transport/static_metadata.h +30 -23
  518. data/src/core/lib/transport/{status_conversion.c → status_conversion.cc} +4 -3
  519. data/src/core/lib/transport/status_conversion.h +12 -2
  520. data/src/core/lib/transport/{timeout_encoding.c → timeout_encoding.cc} +28 -61
  521. data/src/core/lib/transport/timeout_encoding.h +11 -2
  522. data/src/core/lib/transport/{transport.c → transport.cc} +79 -79
  523. data/src/core/lib/transport/transport.h +78 -80
  524. data/src/core/lib/transport/transport_impl.h +27 -19
  525. data/src/core/lib/transport/{transport_op_string.c → transport_op_string.cc} +32 -30
  526. data/src/core/plugin_registry/{grpc_plugin_registry.c → grpc_plugin_registry.cc} +34 -38
  527. data/src/core/tsi/{fake_transport_security.c → fake_transport_security.cc} +141 -132
  528. data/src/core/tsi/fake_transport_security.h +5 -5
  529. data/src/core/tsi/{gts_transport_security.c → gts_transport_security.cc} +4 -4
  530. data/src/core/tsi/gts_transport_security.h +11 -3
  531. data/src/core/tsi/{ssl_transport_security.c → ssl_transport_security.cc} +309 -300
  532. data/src/core/tsi/ssl_transport_security.h +25 -25
  533. data/src/core/tsi/ssl_types.h +8 -0
  534. data/src/core/tsi/{transport_security.c → transport_security.cc} +94 -87
  535. data/src/core/tsi/transport_security.h +55 -55
  536. data/src/core/tsi/{transport_security_adapter.c → transport_security_adapter.cc} +58 -55
  537. data/src/core/tsi/transport_security_adapter.h +2 -2
  538. data/src/core/tsi/{transport_security_grpc.c → transport_security_grpc.cc} +21 -21
  539. data/src/core/tsi/transport_security_grpc.h +19 -19
  540. data/src/core/tsi/transport_security_interface.h +41 -41
  541. data/src/ruby/ext/grpc/extconf.rb +4 -2
  542. data/src/ruby/ext/grpc/rb_byte_buffer.c +5 -5
  543. data/src/ruby/ext/grpc/rb_byte_buffer.h +2 -2
  544. data/src/ruby/ext/grpc/rb_call.c +41 -42
  545. data/src/ruby/ext/grpc/rb_call.h +6 -6
  546. data/src/ruby/ext/grpc/rb_call_credentials.c +30 -30
  547. data/src/ruby/ext/grpc/rb_channel.c +87 -87
  548. data/src/ruby/ext/grpc/rb_channel_credentials.c +23 -23
  549. data/src/ruby/ext/grpc/rb_completion_queue.c +11 -11
  550. data/src/ruby/ext/grpc/rb_completion_queue.h +3 -3
  551. data/src/ruby/ext/grpc/rb_compression_options.c +20 -20
  552. data/src/ruby/ext/grpc/rb_event_thread.c +14 -14
  553. data/src/ruby/ext/grpc/rb_event_thread.h +1 -1
  554. data/src/ruby/ext/grpc/rb_grpc.c +8 -8
  555. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +16 -58
  556. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +242 -306
  557. data/src/ruby/ext/grpc/rb_server.c +23 -23
  558. data/src/ruby/ext/grpc/rb_server_credentials.c +13 -13
  559. data/src/ruby/lib/grpc/generic/rpc_server.rb +25 -12
  560. data/src/ruby/lib/grpc/version.rb +1 -1
  561. data/src/ruby/pb/grpc/health/checker.rb +14 -0
  562. data/src/ruby/spec/pb/health/checker_spec.rb +29 -0
  563. data/third_party/cares/config_freebsd/ares_config.h +502 -0
  564. data/third_party/cares/config_openbsd/ares_config.h +502 -0
  565. metadata +302 -328
  566. data/src/core/ext/census/aggregation.h +0 -51
  567. data/src/core/ext/census/base_resources.c +0 -56
  568. data/src/core/ext/census/base_resources.h +0 -24
  569. data/src/core/ext/census/census_interface.h +0 -61
  570. data/src/core/ext/census/census_rpc_stats.h +0 -86
  571. data/src/core/ext/census/context.c +0 -496
  572. data/src/core/ext/census/gen/census.pb.c +0 -161
  573. data/src/core/ext/census/gen/census.pb.h +0 -280
  574. data/src/core/ext/census/gen/trace_context.pb.c +0 -39
  575. data/src/core/ext/census/gen/trace_context.pb.h +0 -78
  576. data/src/core/ext/census/grpc_filter.c +0 -196
  577. data/src/core/ext/census/grpc_plugin.c +0 -70
  578. data/src/core/ext/census/initialize.c +0 -51
  579. data/src/core/ext/census/intrusive_hash_map.c +0 -305
  580. data/src/core/ext/census/intrusive_hash_map.h +0 -152
  581. data/src/core/ext/census/intrusive_hash_map_internal.h +0 -48
  582. data/src/core/ext/census/mlog.c +0 -586
  583. data/src/core/ext/census/mlog.h +0 -80
  584. data/src/core/ext/census/operation.c +0 -48
  585. data/src/core/ext/census/placeholders.c +0 -49
  586. data/src/core/ext/census/resource.c +0 -303
  587. data/src/core/ext/census/resource.h +0 -48
  588. data/src/core/ext/census/rpc_metric_id.h +0 -36
  589. data/src/core/ext/census/trace_context.c +0 -71
  590. data/src/core/ext/census/trace_context.h +0 -56
  591. data/src/core/ext/census/trace_label.h +0 -46
  592. data/src/core/ext/census/trace_propagation.h +0 -48
  593. data/src/core/ext/census/trace_status.h +0 -30
  594. data/src/core/ext/census/trace_string.h +0 -35
  595. data/src/core/ext/census/tracing.c +0 -55
  596. data/src/core/ext/census/tracing.h +0 -109
  597. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.c +0 -714
  598. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c +0 -924
  599. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.c +0 -60
  600. data/src/core/ext/transport/chttp2/transport/flow_control.c +0 -502
  601. data/src/core/ext/transport/chttp2/transport/writing.c +0 -534
  602. data/src/core/lib/debug/trace.c +0 -146
  603. data/src/core/lib/iomgr/closure.c +0 -219
  604. data/src/core/lib/iomgr/ev_epollex_linux.c +0 -1461
  605. data/src/core/lib/iomgr/ev_posix.c +0 -266
  606. data/src/core/lib/iomgr/exec_ctx.c +0 -113
  607. data/src/core/lib/iomgr/tcp_uv.c +0 -381
  608. data/src/core/lib/security/credentials/ssl/ssl_credentials.c +0 -194
  609. data/src/core/lib/security/transport/security_connector.c +0 -914
  610. data/src/core/lib/support/backoff.c +0 -72
  611. data/src/core/lib/support/backoff.h +0 -56
  612. data/src/core/lib/support/mpscq.c +0 -79
  613. data/src/core/lib/support/stack_lockfree.c +0 -137
  614. data/src/core/lib/support/stack_lockfree.h +0 -38
  615. data/src/core/lib/transport/bdp_estimator.c +0 -110
  616. data/src/core/lib/transport/pid_controller.c +0 -63
@@ -19,6 +19,10 @@
19
19
  #ifndef GRPC_CORE_LIB_SECURITY_CREDENTIALS_JWT_JSON_TOKEN_H
20
20
  #define GRPC_CORE_LIB_SECURITY_CREDENTIALS_JWT_JSON_TOKEN_H
21
21
 
22
+ #ifdef __cplusplus
23
+ extern "C" {
24
+ #endif
25
+
22
26
  #include <grpc/slice.h>
23
27
  #include <openssl/rsa.h>
24
28
 
@@ -31,43 +35,47 @@
31
35
  /* --- auth_json_key parsing. --- */
32
36
 
33
37
  typedef struct {
34
- const char *type;
35
- char *private_key_id;
36
- char *client_id;
37
- char *client_email;
38
- RSA *private_key;
38
+ const char* type;
39
+ char* private_key_id;
40
+ char* client_id;
41
+ char* client_email;
42
+ RSA* private_key;
39
43
  } grpc_auth_json_key;
40
44
 
41
45
  /* Returns 1 if the object is valid, 0 otherwise. */
42
- int grpc_auth_json_key_is_valid(const grpc_auth_json_key *json_key);
46
+ int grpc_auth_json_key_is_valid(const grpc_auth_json_key* json_key);
43
47
 
44
48
  /* Creates a json_key object from string. Returns an invalid object if a parsing
45
49
  error has been encountered. */
46
50
  grpc_auth_json_key grpc_auth_json_key_create_from_string(
47
- const char *json_string);
51
+ const char* json_string);
48
52
 
49
53
  /* Creates a json_key object from parsed json. Returns an invalid object if a
50
54
  parsing error has been encountered. */
51
- grpc_auth_json_key grpc_auth_json_key_create_from_json(const grpc_json *json);
55
+ grpc_auth_json_key grpc_auth_json_key_create_from_json(const grpc_json* json);
52
56
 
53
57
  /* Destructs the object. */
54
- void grpc_auth_json_key_destruct(grpc_auth_json_key *json_key);
58
+ void grpc_auth_json_key_destruct(grpc_auth_json_key* json_key);
55
59
 
56
60
  /* --- json token encoding and signing. --- */
57
61
 
58
62
  /* Caller is responsible for calling gpr_free on the returned value. May return
59
63
  NULL on invalid input. The scope parameter may be NULL. */
60
- char *grpc_jwt_encode_and_sign(const grpc_auth_json_key *json_key,
61
- const char *audience,
62
- gpr_timespec token_lifetime, const char *scope);
64
+ char* grpc_jwt_encode_and_sign(const grpc_auth_json_key* json_key,
65
+ const char* audience,
66
+ gpr_timespec token_lifetime, const char* scope);
63
67
 
64
68
  /* Override encode_and_sign function for testing. */
65
- typedef char *(*grpc_jwt_encode_and_sign_override)(
66
- const grpc_auth_json_key *json_key, const char *audience,
67
- gpr_timespec token_lifetime, const char *scope);
69
+ typedef char* (*grpc_jwt_encode_and_sign_override)(
70
+ const grpc_auth_json_key* json_key, const char* audience,
71
+ gpr_timespec token_lifetime, const char* scope);
68
72
 
69
73
  /* Set a custom encode_and_sign override for testing. */
70
74
  void grpc_jwt_encode_and_sign_set_override(
71
75
  grpc_jwt_encode_and_sign_override func);
72
76
 
77
+ #ifdef __cplusplus
78
+ }
79
+ #endif
80
+
73
81
  #endif /* GRPC_CORE_LIB_SECURITY_CREDENTIALS_JWT_JSON_TOKEN_H */
@@ -16,8 +16,11 @@
16
16
  *
17
17
  */
18
18
 
19
+ #include <grpc/support/port_platform.h>
20
+
19
21
  #include "src/core/lib/security/credentials/jwt/jwt_credentials.h"
20
22
 
23
+ #include <inttypes.h>
21
24
  #include <string.h>
22
25
 
23
26
  #include "src/core/lib/surface/api_trace.h"
@@ -27,35 +30,35 @@
27
30
  #include <grpc/support/string_util.h>
28
31
  #include <grpc/support/sync.h>
29
32
 
30
- static void jwt_reset_cache(grpc_exec_ctx *exec_ctx,
31
- grpc_service_account_jwt_access_credentials *c) {
33
+ static void jwt_reset_cache(grpc_exec_ctx* exec_ctx,
34
+ grpc_service_account_jwt_access_credentials* c) {
32
35
  GRPC_MDELEM_UNREF(exec_ctx, c->cached.jwt_md);
33
36
  c->cached.jwt_md = GRPC_MDNULL;
34
- if (c->cached.service_url != NULL) {
37
+ if (c->cached.service_url != nullptr) {
35
38
  gpr_free(c->cached.service_url);
36
- c->cached.service_url = NULL;
39
+ c->cached.service_url = nullptr;
37
40
  }
38
41
  c->cached.jwt_expiration = gpr_inf_past(GPR_CLOCK_REALTIME);
39
42
  }
40
43
 
41
- static void jwt_destruct(grpc_exec_ctx *exec_ctx,
42
- grpc_call_credentials *creds) {
43
- grpc_service_account_jwt_access_credentials *c =
44
- (grpc_service_account_jwt_access_credentials *)creds;
44
+ static void jwt_destruct(grpc_exec_ctx* exec_ctx,
45
+ grpc_call_credentials* creds) {
46
+ grpc_service_account_jwt_access_credentials* c =
47
+ (grpc_service_account_jwt_access_credentials*)creds;
45
48
  grpc_auth_json_key_destruct(&c->key);
46
49
  jwt_reset_cache(exec_ctx, c);
47
50
  gpr_mu_destroy(&c->cache_mu);
48
51
  }
49
52
 
50
- static bool jwt_get_request_metadata(grpc_exec_ctx *exec_ctx,
51
- grpc_call_credentials *creds,
52
- grpc_polling_entity *pollent,
53
+ static bool jwt_get_request_metadata(grpc_exec_ctx* exec_ctx,
54
+ grpc_call_credentials* creds,
55
+ grpc_polling_entity* pollent,
53
56
  grpc_auth_metadata_context context,
54
- grpc_credentials_mdelem_array *md_array,
55
- grpc_closure *on_request_metadata,
56
- grpc_error **error) {
57
- grpc_service_account_jwt_access_credentials *c =
58
- (grpc_service_account_jwt_access_credentials *)creds;
57
+ grpc_credentials_mdelem_array* md_array,
58
+ grpc_closure* on_request_metadata,
59
+ grpc_error** error) {
60
+ grpc_service_account_jwt_access_credentials* c =
61
+ (grpc_service_account_jwt_access_credentials*)creds;
59
62
  gpr_timespec refresh_threshold = gpr_time_from_seconds(
60
63
  GRPC_SECURE_TOKEN_REFRESH_THRESHOLD_SECS, GPR_TIMESPAN);
61
64
 
@@ -63,7 +66,7 @@ static bool jwt_get_request_metadata(grpc_exec_ctx *exec_ctx,
63
66
  grpc_mdelem jwt_md = GRPC_MDNULL;
64
67
  {
65
68
  gpr_mu_lock(&c->cache_mu);
66
- if (c->cached.service_url != NULL &&
69
+ if (c->cached.service_url != nullptr &&
67
70
  strcmp(c->cached.service_url, context.service_url) == 0 &&
68
71
  !GRPC_MDISNULL(c->cached.jwt_md) &&
69
72
  (gpr_time_cmp(gpr_time_sub(c->cached.jwt_expiration,
@@ -75,14 +78,14 @@ static bool jwt_get_request_metadata(grpc_exec_ctx *exec_ctx,
75
78
  }
76
79
 
77
80
  if (GRPC_MDISNULL(jwt_md)) {
78
- char *jwt = NULL;
81
+ char* jwt = nullptr;
79
82
  /* Generate a new jwt. */
80
83
  gpr_mu_lock(&c->cache_mu);
81
84
  jwt_reset_cache(exec_ctx, c);
82
85
  jwt = grpc_jwt_encode_and_sign(&c->key, context.service_url,
83
- c->jwt_lifetime, NULL);
84
- if (jwt != NULL) {
85
- char *md_value;
86
+ c->jwt_lifetime, nullptr);
87
+ if (jwt != nullptr) {
88
+ char* md_value;
86
89
  gpr_asprintf(&md_value, "Bearer %s", jwt);
87
90
  gpr_free(jwt);
88
91
  c->cached.jwt_expiration =
@@ -108,24 +111,25 @@ static bool jwt_get_request_metadata(grpc_exec_ctx *exec_ctx,
108
111
  }
109
112
 
110
113
  static void jwt_cancel_get_request_metadata(
111
- grpc_exec_ctx *exec_ctx, grpc_call_credentials *c,
112
- grpc_credentials_mdelem_array *md_array, grpc_error *error) {
114
+ grpc_exec_ctx* exec_ctx, grpc_call_credentials* c,
115
+ grpc_credentials_mdelem_array* md_array, grpc_error* error) {
113
116
  GRPC_ERROR_UNREF(error);
114
117
  }
115
118
 
116
119
  static grpc_call_credentials_vtable jwt_vtable = {
117
120
  jwt_destruct, jwt_get_request_metadata, jwt_cancel_get_request_metadata};
118
121
 
119
- grpc_call_credentials *
122
+ grpc_call_credentials*
120
123
  grpc_service_account_jwt_access_credentials_create_from_auth_json_key(
121
- grpc_exec_ctx *exec_ctx, grpc_auth_json_key key,
124
+ grpc_exec_ctx* exec_ctx, grpc_auth_json_key key,
122
125
  gpr_timespec token_lifetime) {
123
- grpc_service_account_jwt_access_credentials *c;
126
+ grpc_service_account_jwt_access_credentials* c;
124
127
  if (!grpc_auth_json_key_is_valid(&key)) {
125
128
  gpr_log(GPR_ERROR, "Invalid input for jwt credentials creation");
126
- return NULL;
129
+ return nullptr;
127
130
  }
128
- c = gpr_zalloc(sizeof(grpc_service_account_jwt_access_credentials));
131
+ c = (grpc_service_account_jwt_access_credentials*)gpr_zalloc(
132
+ sizeof(grpc_service_account_jwt_access_credentials));
129
133
  c->base.type = GRPC_CALL_CREDENTIALS_TYPE_JWT;
130
134
  gpr_ref_init(&c->base.refcount, 1);
131
135
  c->base.vtable = &jwt_vtable;
@@ -143,33 +147,33 @@ grpc_service_account_jwt_access_credentials_create_from_auth_json_key(
143
147
  return &c->base;
144
148
  }
145
149
 
146
- static char *redact_private_key(const char *json_key) {
147
- char *json_copy = gpr_strdup(json_key);
148
- grpc_json *json = grpc_json_parse_string(json_copy);
150
+ static char* redact_private_key(const char* json_key) {
151
+ char* json_copy = gpr_strdup(json_key);
152
+ grpc_json* json = grpc_json_parse_string(json_copy);
149
153
  if (!json) {
150
154
  gpr_free(json_copy);
151
155
  return gpr_strdup("<Json failed to parse.>");
152
156
  }
153
- const char *redacted = "<redacted>";
154
- grpc_json *current = json->child;
157
+ const char* redacted = "<redacted>";
158
+ grpc_json* current = json->child;
155
159
  while (current) {
156
160
  if (current->type == GRPC_JSON_STRING &&
157
161
  strcmp(current->key, "private_key") == 0) {
158
- current->value = (char *)redacted;
162
+ current->value = (char*)redacted;
159
163
  break;
160
164
  }
161
165
  current = current->next;
162
166
  }
163
- char *clean_json = grpc_json_dump_to_string(json, 2);
167
+ char* clean_json = grpc_json_dump_to_string(json, 2);
164
168
  gpr_free(json_copy);
165
169
  grpc_json_destroy(json);
166
170
  return clean_json;
167
171
  }
168
172
 
169
- grpc_call_credentials *grpc_service_account_jwt_access_credentials_create(
170
- const char *json_key, gpr_timespec token_lifetime, void *reserved) {
171
- if (GRPC_TRACER_ON(grpc_api_trace)) {
172
- char *clean_json = redact_private_key(json_key);
173
+ grpc_call_credentials* grpc_service_account_jwt_access_credentials_create(
174
+ const char* json_key, gpr_timespec token_lifetime, void* reserved) {
175
+ if (grpc_api_trace.enabled()) {
176
+ char* clean_json = redact_private_key(json_key);
173
177
  gpr_log(GPR_INFO,
174
178
  "grpc_service_account_jwt_access_credentials_create("
175
179
  "json_key=%s, "
@@ -181,9 +185,9 @@ grpc_call_credentials *grpc_service_account_jwt_access_credentials_create(
181
185
  (int)token_lifetime.clock_type, reserved);
182
186
  gpr_free(clean_json);
183
187
  }
184
- GPR_ASSERT(reserved == NULL);
188
+ GPR_ASSERT(reserved == nullptr);
185
189
  grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
186
- grpc_call_credentials *creds =
190
+ grpc_call_credentials* creds =
187
191
  grpc_service_account_jwt_access_credentials_create_from_auth_json_key(
188
192
  &exec_ctx, grpc_auth_json_key_create_from_string(json_key),
189
193
  token_lifetime);
@@ -22,6 +22,10 @@
22
22
  #include "src/core/lib/security/credentials/credentials.h"
23
23
  #include "src/core/lib/security/credentials/jwt/json_token.h"
24
24
 
25
+ #ifdef __cplusplus
26
+ extern "C" {
27
+ #endif
28
+
25
29
  typedef struct {
26
30
  grpc_call_credentials base;
27
31
 
@@ -30,7 +34,7 @@ typedef struct {
30
34
  gpr_mu cache_mu;
31
35
  struct {
32
36
  grpc_mdelem jwt_md;
33
- char *service_url;
37
+ char* service_url;
34
38
  gpr_timespec jwt_expiration;
35
39
  } cached;
36
40
 
@@ -40,9 +44,13 @@ typedef struct {
40
44
 
41
45
  // Private constructor for jwt credentials from an already parsed json key.
42
46
  // Takes ownership of the key.
43
- grpc_call_credentials *
47
+ grpc_call_credentials*
44
48
  grpc_service_account_jwt_access_credentials_create_from_auth_json_key(
45
- grpc_exec_ctx *exec_ctx, grpc_auth_json_key key,
49
+ grpc_exec_ctx* exec_ctx, grpc_auth_json_key key,
46
50
  gpr_timespec token_lifetime);
47
51
 
52
+ #ifdef __cplusplus
53
+ }
54
+ #endif
55
+
48
56
  #endif /* GRPC_CORE_LIB_SECURITY_CREDENTIALS_JWT_JWT_CREDENTIALS_H */
@@ -26,7 +26,10 @@
26
26
  #include <grpc/support/string_util.h>
27
27
  #include <grpc/support/sync.h>
28
28
  #include <grpc/support/useful.h>
29
+
30
+ extern "C" {
29
31
  #include <openssl/pem.h>
32
+ }
30
33
 
31
34
  #include "src/core/lib/http/httpcli.h"
32
35
  #include "src/core/lib/iomgr/polling_entity.h"
@@ -37,7 +40,7 @@
37
40
 
38
41
  /* --- Utils. --- */
39
42
 
40
- const char *grpc_jwt_verifier_status_to_string(
43
+ const char* grpc_jwt_verifier_status_to_string(
41
44
  grpc_jwt_verifier_status status) {
42
45
  switch (status) {
43
46
  case GRPC_JWT_VERIFIER_OK:
@@ -59,7 +62,7 @@ const char *grpc_jwt_verifier_status_to_string(
59
62
  }
60
63
  }
61
64
 
62
- static const EVP_MD *evp_md_from_alg(const char *alg) {
65
+ static const EVP_MD* evp_md_from_alg(const char* alg) {
63
66
  if (strcmp(alg, "RS256") == 0) {
64
67
  return EVP_sha256();
65
68
  } else if (strcmp(alg, "RS384") == 0) {
@@ -67,91 +70,91 @@ static const EVP_MD *evp_md_from_alg(const char *alg) {
67
70
  } else if (strcmp(alg, "RS512") == 0) {
68
71
  return EVP_sha512();
69
72
  } else {
70
- return NULL;
73
+ return nullptr;
71
74
  }
72
75
  }
73
76
 
74
- static grpc_json *parse_json_part_from_jwt(grpc_exec_ctx *exec_ctx,
75
- const char *str, size_t len,
76
- grpc_slice *buffer) {
77
- grpc_json *json;
77
+ static grpc_json* parse_json_part_from_jwt(grpc_exec_ctx* exec_ctx,
78
+ const char* str, size_t len,
79
+ grpc_slice* buffer) {
80
+ grpc_json* json;
78
81
 
79
82
  *buffer = grpc_base64_decode_with_len(exec_ctx, str, len, 1);
80
83
  if (GRPC_SLICE_IS_EMPTY(*buffer)) {
81
84
  gpr_log(GPR_ERROR, "Invalid base64.");
82
- return NULL;
85
+ return nullptr;
83
86
  }
84
- json = grpc_json_parse_string_with_len((char *)GRPC_SLICE_START_PTR(*buffer),
87
+ json = grpc_json_parse_string_with_len((char*)GRPC_SLICE_START_PTR(*buffer),
85
88
  GRPC_SLICE_LENGTH(*buffer));
86
- if (json == NULL) {
89
+ if (json == nullptr) {
87
90
  grpc_slice_unref_internal(exec_ctx, *buffer);
88
91
  gpr_log(GPR_ERROR, "JSON parsing error.");
89
92
  }
90
93
  return json;
91
94
  }
92
95
 
93
- static const char *validate_string_field(const grpc_json *json,
94
- const char *key) {
96
+ static const char* validate_string_field(const grpc_json* json,
97
+ const char* key) {
95
98
  if (json->type != GRPC_JSON_STRING) {
96
99
  gpr_log(GPR_ERROR, "Invalid %s field [%s]", key, json->value);
97
- return NULL;
100
+ return nullptr;
98
101
  }
99
102
  return json->value;
100
103
  }
101
104
 
102
- static gpr_timespec validate_time_field(const grpc_json *json,
103
- const char *key) {
105
+ static gpr_timespec validate_time_field(const grpc_json* json,
106
+ const char* key) {
104
107
  gpr_timespec result = gpr_time_0(GPR_CLOCK_REALTIME);
105
108
  if (json->type != GRPC_JSON_NUMBER) {
106
109
  gpr_log(GPR_ERROR, "Invalid %s field [%s]", key, json->value);
107
110
  return result;
108
111
  }
109
- result.tv_sec = strtol(json->value, NULL, 10);
112
+ result.tv_sec = strtol(json->value, nullptr, 10);
110
113
  return result;
111
114
  }
112
115
 
113
116
  /* --- JOSE header. see http://tools.ietf.org/html/rfc7515#section-4 --- */
114
117
 
115
118
  typedef struct {
116
- const char *alg;
117
- const char *kid;
118
- const char *typ;
119
+ const char* alg;
120
+ const char* kid;
121
+ const char* typ;
119
122
  /* TODO(jboeuf): Add others as needed (jku, jwk, x5u, x5c and so on...). */
120
123
  grpc_slice buffer;
121
124
  } jose_header;
122
125
 
123
- static void jose_header_destroy(grpc_exec_ctx *exec_ctx, jose_header *h) {
126
+ static void jose_header_destroy(grpc_exec_ctx* exec_ctx, jose_header* h) {
124
127
  grpc_slice_unref_internal(exec_ctx, h->buffer);
125
128
  gpr_free(h);
126
129
  }
127
130
 
128
131
  /* Takes ownership of json and buffer. */
129
- static jose_header *jose_header_from_json(grpc_exec_ctx *exec_ctx,
130
- grpc_json *json, grpc_slice buffer) {
131
- grpc_json *cur;
132
- jose_header *h = gpr_zalloc(sizeof(jose_header));
132
+ static jose_header* jose_header_from_json(grpc_exec_ctx* exec_ctx,
133
+ grpc_json* json, grpc_slice buffer) {
134
+ grpc_json* cur;
135
+ jose_header* h = (jose_header*)gpr_zalloc(sizeof(jose_header));
133
136
  h->buffer = buffer;
134
- for (cur = json->child; cur != NULL; cur = cur->next) {
137
+ for (cur = json->child; cur != nullptr; cur = cur->next) {
135
138
  if (strcmp(cur->key, "alg") == 0) {
136
139
  /* We only support RSA-1.5 signatures for now.
137
140
  Beware of this if we add HMAC support:
138
141
  https://auth0.com/blog/2015/03/31/critical-vulnerabilities-in-json-web-token-libraries/
139
142
  */
140
143
  if (cur->type != GRPC_JSON_STRING || strncmp(cur->value, "RS", 2) ||
141
- evp_md_from_alg(cur->value) == NULL) {
144
+ evp_md_from_alg(cur->value) == nullptr) {
142
145
  gpr_log(GPR_ERROR, "Invalid alg field [%s]", cur->value);
143
146
  goto error;
144
147
  }
145
148
  h->alg = cur->value;
146
149
  } else if (strcmp(cur->key, "typ") == 0) {
147
150
  h->typ = validate_string_field(cur, "typ");
148
- if (h->typ == NULL) goto error;
151
+ if (h->typ == nullptr) goto error;
149
152
  } else if (strcmp(cur->key, "kid") == 0) {
150
153
  h->kid = validate_string_field(cur, "kid");
151
- if (h->kid == NULL) goto error;
154
+ if (h->kid == nullptr) goto error;
152
155
  }
153
156
  }
154
- if (h->alg == NULL) {
157
+ if (h->alg == nullptr) {
155
158
  gpr_log(GPR_ERROR, "Missing alg field.");
156
159
  goto error;
157
160
  }
@@ -162,76 +165,77 @@ static jose_header *jose_header_from_json(grpc_exec_ctx *exec_ctx,
162
165
  error:
163
166
  grpc_json_destroy(json);
164
167
  jose_header_destroy(exec_ctx, h);
165
- return NULL;
168
+ return nullptr;
166
169
  }
167
170
 
168
171
  /* --- JWT claims. see http://tools.ietf.org/html/rfc7519#section-4.1 */
169
172
 
170
173
  struct grpc_jwt_claims {
171
174
  /* Well known properties already parsed. */
172
- const char *sub;
173
- const char *iss;
174
- const char *aud;
175
- const char *jti;
175
+ const char* sub;
176
+ const char* iss;
177
+ const char* aud;
178
+ const char* jti;
176
179
  gpr_timespec iat;
177
180
  gpr_timespec exp;
178
181
  gpr_timespec nbf;
179
182
 
180
- grpc_json *json;
183
+ grpc_json* json;
181
184
  grpc_slice buffer;
182
185
  };
183
186
 
184
- void grpc_jwt_claims_destroy(grpc_exec_ctx *exec_ctx, grpc_jwt_claims *claims) {
187
+ void grpc_jwt_claims_destroy(grpc_exec_ctx* exec_ctx, grpc_jwt_claims* claims) {
185
188
  grpc_json_destroy(claims->json);
186
189
  grpc_slice_unref_internal(exec_ctx, claims->buffer);
187
190
  gpr_free(claims);
188
191
  }
189
192
 
190
- const grpc_json *grpc_jwt_claims_json(const grpc_jwt_claims *claims) {
191
- if (claims == NULL) return NULL;
193
+ const grpc_json* grpc_jwt_claims_json(const grpc_jwt_claims* claims) {
194
+ if (claims == nullptr) return nullptr;
192
195
  return claims->json;
193
196
  }
194
197
 
195
- const char *grpc_jwt_claims_subject(const grpc_jwt_claims *claims) {
196
- if (claims == NULL) return NULL;
198
+ const char* grpc_jwt_claims_subject(const grpc_jwt_claims* claims) {
199
+ if (claims == nullptr) return nullptr;
197
200
  return claims->sub;
198
201
  }
199
202
 
200
- const char *grpc_jwt_claims_issuer(const grpc_jwt_claims *claims) {
201
- if (claims == NULL) return NULL;
203
+ const char* grpc_jwt_claims_issuer(const grpc_jwt_claims* claims) {
204
+ if (claims == nullptr) return nullptr;
202
205
  return claims->iss;
203
206
  }
204
207
 
205
- const char *grpc_jwt_claims_id(const grpc_jwt_claims *claims) {
206
- if (claims == NULL) return NULL;
208
+ const char* grpc_jwt_claims_id(const grpc_jwt_claims* claims) {
209
+ if (claims == nullptr) return nullptr;
207
210
  return claims->jti;
208
211
  }
209
212
 
210
- const char *grpc_jwt_claims_audience(const grpc_jwt_claims *claims) {
211
- if (claims == NULL) return NULL;
213
+ const char* grpc_jwt_claims_audience(const grpc_jwt_claims* claims) {
214
+ if (claims == nullptr) return nullptr;
212
215
  return claims->aud;
213
216
  }
214
217
 
215
- gpr_timespec grpc_jwt_claims_issued_at(const grpc_jwt_claims *claims) {
216
- if (claims == NULL) return gpr_inf_past(GPR_CLOCK_REALTIME);
218
+ gpr_timespec grpc_jwt_claims_issued_at(const grpc_jwt_claims* claims) {
219
+ if (claims == nullptr) return gpr_inf_past(GPR_CLOCK_REALTIME);
217
220
  return claims->iat;
218
221
  }
219
222
 
220
- gpr_timespec grpc_jwt_claims_expires_at(const grpc_jwt_claims *claims) {
221
- if (claims == NULL) return gpr_inf_future(GPR_CLOCK_REALTIME);
223
+ gpr_timespec grpc_jwt_claims_expires_at(const grpc_jwt_claims* claims) {
224
+ if (claims == nullptr) return gpr_inf_future(GPR_CLOCK_REALTIME);
222
225
  return claims->exp;
223
226
  }
224
227
 
225
- gpr_timespec grpc_jwt_claims_not_before(const grpc_jwt_claims *claims) {
226
- if (claims == NULL) return gpr_inf_past(GPR_CLOCK_REALTIME);
228
+ gpr_timespec grpc_jwt_claims_not_before(const grpc_jwt_claims* claims) {
229
+ if (claims == nullptr) return gpr_inf_past(GPR_CLOCK_REALTIME);
227
230
  return claims->nbf;
228
231
  }
229
232
 
230
233
  /* Takes ownership of json and buffer even in case of failure. */
231
- grpc_jwt_claims *grpc_jwt_claims_from_json(grpc_exec_ctx *exec_ctx,
232
- grpc_json *json, grpc_slice buffer) {
233
- grpc_json *cur;
234
- grpc_jwt_claims *claims = gpr_malloc(sizeof(grpc_jwt_claims));
234
+ grpc_jwt_claims* grpc_jwt_claims_from_json(grpc_exec_ctx* exec_ctx,
235
+ grpc_json* json, grpc_slice buffer) {
236
+ grpc_json* cur;
237
+ grpc_jwt_claims* claims =
238
+ (grpc_jwt_claims*)gpr_malloc(sizeof(grpc_jwt_claims));
235
239
  memset(claims, 0, sizeof(grpc_jwt_claims));
236
240
  claims->json = json;
237
241
  claims->buffer = buffer;
@@ -240,19 +244,19 @@ grpc_jwt_claims *grpc_jwt_claims_from_json(grpc_exec_ctx *exec_ctx,
240
244
  claims->exp = gpr_inf_future(GPR_CLOCK_REALTIME);
241
245
 
242
246
  /* Per the spec, all fields are optional. */
243
- for (cur = json->child; cur != NULL; cur = cur->next) {
247
+ for (cur = json->child; cur != nullptr; cur = cur->next) {
244
248
  if (strcmp(cur->key, "sub") == 0) {
245
249
  claims->sub = validate_string_field(cur, "sub");
246
- if (claims->sub == NULL) goto error;
250
+ if (claims->sub == nullptr) goto error;
247
251
  } else if (strcmp(cur->key, "iss") == 0) {
248
252
  claims->iss = validate_string_field(cur, "iss");
249
- if (claims->iss == NULL) goto error;
253
+ if (claims->iss == nullptr) goto error;
250
254
  } else if (strcmp(cur->key, "aud") == 0) {
251
255
  claims->aud = validate_string_field(cur, "aud");
252
- if (claims->aud == NULL) goto error;
256
+ if (claims->aud == nullptr) goto error;
253
257
  } else if (strcmp(cur->key, "jti") == 0) {
254
258
  claims->jti = validate_string_field(cur, "jti");
255
- if (claims->jti == NULL) goto error;
259
+ if (claims->jti == nullptr) goto error;
256
260
  } else if (strcmp(cur->key, "iat") == 0) {
257
261
  claims->iat = validate_time_field(cur, "iat");
258
262
  if (gpr_time_cmp(claims->iat, gpr_time_0(GPR_CLOCK_REALTIME)) == 0)
@@ -271,15 +275,15 @@ grpc_jwt_claims *grpc_jwt_claims_from_json(grpc_exec_ctx *exec_ctx,
271
275
 
272
276
  error:
273
277
  grpc_jwt_claims_destroy(exec_ctx, claims);
274
- return NULL;
278
+ return nullptr;
275
279
  }
276
280
 
277
- grpc_jwt_verifier_status grpc_jwt_claims_check(const grpc_jwt_claims *claims,
278
- const char *audience) {
281
+ grpc_jwt_verifier_status grpc_jwt_claims_check(const grpc_jwt_claims* claims,
282
+ const char* audience) {
279
283
  gpr_timespec skewed_now;
280
284
  int audience_ok;
281
285
 
282
- GPR_ASSERT(claims != NULL);
286
+ GPR_ASSERT(claims != nullptr);
283
287
 
284
288
  skewed_now =
285
289
  gpr_time_add(gpr_now(GPR_CLOCK_REALTIME), grpc_jwt_verifier_clock_skew);
@@ -297,23 +301,23 @@ grpc_jwt_verifier_status grpc_jwt_claims_check(const grpc_jwt_claims *claims,
297
301
  /* This should be probably up to the upper layer to decide but let's harcode
298
302
  the 99% use case here for email issuers, where the JWT must be self
299
303
  issued. */
300
- if (grpc_jwt_issuer_email_domain(claims->iss) != NULL &&
301
- claims->sub != NULL && strcmp(claims->iss, claims->sub) != 0) {
304
+ if (grpc_jwt_issuer_email_domain(claims->iss) != nullptr &&
305
+ claims->sub != nullptr && strcmp(claims->iss, claims->sub) != 0) {
302
306
  gpr_log(GPR_ERROR,
303
307
  "Email issuer (%s) cannot assert another subject (%s) than itself.",
304
308
  claims->iss, claims->sub);
305
309
  return GRPC_JWT_VERIFIER_BAD_SUBJECT;
306
310
  }
307
311
 
308
- if (audience == NULL) {
309
- audience_ok = claims->aud == NULL;
312
+ if (audience == nullptr) {
313
+ audience_ok = claims->aud == nullptr;
310
314
  } else {
311
- audience_ok = claims->aud != NULL && strcmp(audience, claims->aud) == 0;
315
+ audience_ok = claims->aud != nullptr && strcmp(audience, claims->aud) == 0;
312
316
  }
313
317
  if (!audience_ok) {
314
318
  gpr_log(GPR_ERROR, "Audience mismatch: expected %s and found %s.",
315
- audience == NULL ? "NULL" : audience,
316
- claims->aud == NULL ? "NULL" : claims->aud);
319
+ audience == nullptr ? "NULL" : audience,
320
+ claims->aud == nullptr ? "NULL" : claims->aud);
317
321
  return GRPC_JWT_VERIFIER_BAD_AUDIENCE;
318
322
  }
319
323
  return GRPC_JWT_VERIFIER_OK;
@@ -328,26 +332,26 @@ typedef enum {
328
332
  } http_response_index;
329
333
 
330
334
  typedef struct {
331
- grpc_jwt_verifier *verifier;
335
+ grpc_jwt_verifier* verifier;
332
336
  grpc_polling_entity pollent;
333
- jose_header *header;
334
- grpc_jwt_claims *claims;
335
- char *audience;
337
+ jose_header* header;
338
+ grpc_jwt_claims* claims;
339
+ char* audience;
336
340
  grpc_slice signature;
337
341
  grpc_slice signed_data;
338
- void *user_data;
342
+ void* user_data;
339
343
  grpc_jwt_verification_done_cb user_cb;
340
344
  grpc_http_response responses[HTTP_RESPONSE_COUNT];
341
345
  } verifier_cb_ctx;
342
346
 
343
347
  /* Takes ownership of the header, claims and signature. */
344
- static verifier_cb_ctx *verifier_cb_ctx_create(
345
- grpc_jwt_verifier *verifier, grpc_pollset *pollset, jose_header *header,
346
- grpc_jwt_claims *claims, const char *audience, grpc_slice signature,
347
- const char *signed_jwt, size_t signed_jwt_len, void *user_data,
348
+ static verifier_cb_ctx* verifier_cb_ctx_create(
349
+ grpc_jwt_verifier* verifier, grpc_pollset* pollset, jose_header* header,
350
+ grpc_jwt_claims* claims, const char* audience, grpc_slice signature,
351
+ const char* signed_jwt, size_t signed_jwt_len, void* user_data,
348
352
  grpc_jwt_verification_done_cb cb) {
349
353
  grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
350
- verifier_cb_ctx *ctx = gpr_zalloc(sizeof(verifier_cb_ctx));
354
+ verifier_cb_ctx* ctx = (verifier_cb_ctx*)gpr_zalloc(sizeof(verifier_cb_ctx));
351
355
  ctx->verifier = verifier;
352
356
  ctx->pollent = grpc_polling_entity_create_from_pollset(pollset);
353
357
  ctx->header = header;
@@ -361,9 +365,9 @@ static verifier_cb_ctx *verifier_cb_ctx_create(
361
365
  return ctx;
362
366
  }
363
367
 
364
- void verifier_cb_ctx_destroy(grpc_exec_ctx *exec_ctx, verifier_cb_ctx *ctx) {
365
- if (ctx->audience != NULL) gpr_free(ctx->audience);
366
- if (ctx->claims != NULL) grpc_jwt_claims_destroy(exec_ctx, ctx->claims);
368
+ void verifier_cb_ctx_destroy(grpc_exec_ctx* exec_ctx, verifier_cb_ctx* ctx) {
369
+ if (ctx->audience != nullptr) gpr_free(ctx->audience);
370
+ if (ctx->claims != nullptr) grpc_jwt_claims_destroy(exec_ctx, ctx->claims);
367
371
  grpc_slice_unref_internal(exec_ctx, ctx->signature);
368
372
  grpc_slice_unref_internal(exec_ctx, ctx->signed_data);
369
373
  jose_header_destroy(exec_ctx, ctx->header);
@@ -380,63 +384,63 @@ void verifier_cb_ctx_destroy(grpc_exec_ctx *exec_ctx, verifier_cb_ctx *ctx) {
380
384
  gpr_timespec grpc_jwt_verifier_clock_skew = {60, 0, GPR_TIMESPAN};
381
385
 
382
386
  /* Max delay defaults to one minute. */
383
- gpr_timespec grpc_jwt_verifier_max_delay = {60, 0, GPR_TIMESPAN};
387
+ grpc_millis grpc_jwt_verifier_max_delay = 60 * GPR_MS_PER_SEC;
384
388
 
385
389
  typedef struct {
386
- char *email_domain;
387
- char *key_url_prefix;
390
+ char* email_domain;
391
+ char* key_url_prefix;
388
392
  } email_key_mapping;
389
393
 
390
394
  struct grpc_jwt_verifier {
391
- email_key_mapping *mappings;
395
+ email_key_mapping* mappings;
392
396
  size_t num_mappings; /* Should be very few, linear search ok. */
393
397
  size_t allocated_mappings;
394
398
  grpc_httpcli_context http_ctx;
395
399
  };
396
400
 
397
- static grpc_json *json_from_http(const grpc_httpcli_response *response) {
398
- grpc_json *json = NULL;
401
+ static grpc_json* json_from_http(const grpc_httpcli_response* response) {
402
+ grpc_json* json = nullptr;
399
403
 
400
- if (response == NULL) {
404
+ if (response == nullptr) {
401
405
  gpr_log(GPR_ERROR, "HTTP response is NULL.");
402
- return NULL;
406
+ return nullptr;
403
407
  }
404
408
  if (response->status != 200) {
405
409
  gpr_log(GPR_ERROR, "Call to http server failed with error %d.",
406
410
  response->status);
407
- return NULL;
411
+ return nullptr;
408
412
  }
409
413
 
410
414
  json = grpc_json_parse_string_with_len(response->body, response->body_length);
411
- if (json == NULL) {
415
+ if (json == nullptr) {
412
416
  gpr_log(GPR_ERROR, "Invalid JSON found in response.");
413
417
  }
414
418
  return json;
415
419
  }
416
420
 
417
- static const grpc_json *find_property_by_name(const grpc_json *json,
418
- const char *name) {
419
- const grpc_json *cur;
420
- for (cur = json->child; cur != NULL; cur = cur->next) {
421
+ static const grpc_json* find_property_by_name(const grpc_json* json,
422
+ const char* name) {
423
+ const grpc_json* cur;
424
+ for (cur = json->child; cur != nullptr; cur = cur->next) {
421
425
  if (strcmp(cur->key, name) == 0) return cur;
422
426
  }
423
- return NULL;
427
+ return nullptr;
424
428
  }
425
429
 
426
- static EVP_PKEY *extract_pkey_from_x509(const char *x509_str) {
427
- X509 *x509 = NULL;
428
- EVP_PKEY *result = NULL;
429
- BIO *bio = BIO_new(BIO_s_mem());
430
+ static EVP_PKEY* extract_pkey_from_x509(const char* x509_str) {
431
+ X509* x509 = nullptr;
432
+ EVP_PKEY* result = nullptr;
433
+ BIO* bio = BIO_new(BIO_s_mem());
430
434
  size_t len = strlen(x509_str);
431
435
  GPR_ASSERT(len < INT_MAX);
432
436
  BIO_write(bio, x509_str, (int)len);
433
- x509 = PEM_read_bio_X509(bio, NULL, NULL, NULL);
434
- if (x509 == NULL) {
437
+ x509 = PEM_read_bio_X509(bio, nullptr, nullptr, nullptr);
438
+ if (x509 == nullptr) {
435
439
  gpr_log(GPR_ERROR, "Unable to parse x509 cert.");
436
440
  goto end;
437
441
  }
438
442
  result = X509_get_pubkey(x509);
439
- if (result == NULL) {
443
+ if (result == nullptr) {
440
444
  gpr_log(GPR_ERROR, "Cannot find public key in X509 cert.");
441
445
  }
442
446
 
@@ -446,18 +450,18 @@ end:
446
450
  return result;
447
451
  }
448
452
 
449
- static BIGNUM *bignum_from_base64(grpc_exec_ctx *exec_ctx, const char *b64) {
450
- BIGNUM *result = NULL;
453
+ static BIGNUM* bignum_from_base64(grpc_exec_ctx* exec_ctx, const char* b64) {
454
+ BIGNUM* result = nullptr;
451
455
  grpc_slice bin;
452
456
 
453
- if (b64 == NULL) return NULL;
457
+ if (b64 == nullptr) return nullptr;
454
458
  bin = grpc_base64_decode(exec_ctx, b64, 1);
455
459
  if (GRPC_SLICE_IS_EMPTY(bin)) {
456
460
  gpr_log(GPR_ERROR, "Invalid base64 for big num.");
457
- return NULL;
461
+ return nullptr;
458
462
  }
459
463
  result = BN_bin2bn(GRPC_SLICE_START_PTR(bin),
460
- TSI_SIZE_AS_SIZE(GRPC_SLICE_LENGTH(bin)), NULL);
464
+ TSI_SIZE_AS_SIZE(GRPC_SLICE_LENGTH(bin)), nullptr);
461
465
  grpc_slice_unref_internal(exec_ctx, bin);
462
466
  return result;
463
467
  }
@@ -465,24 +469,24 @@ static BIGNUM *bignum_from_base64(grpc_exec_ctx *exec_ctx, const char *b64) {
465
469
  #if OPENSSL_VERSION_NUMBER < 0x10100000L
466
470
 
467
471
  // Provide compatibility across OpenSSL 1.02 and 1.1.
468
- static int RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d) {
472
+ static int RSA_set0_key(RSA* r, BIGNUM* n, BIGNUM* e, BIGNUM* d) {
469
473
  /* If the fields n and e in r are NULL, the corresponding input
470
474
  * parameters MUST be non-NULL for n and e. d may be
471
475
  * left NULL (in case only the public key is used).
472
476
  */
473
- if ((r->n == NULL && n == NULL) || (r->e == NULL && e == NULL)) {
477
+ if ((r->n == nullptr && n == nullptr) || (r->e == nullptr && e == nullptr)) {
474
478
  return 0;
475
479
  }
476
480
 
477
- if (n != NULL) {
481
+ if (n != nullptr) {
478
482
  BN_free(r->n);
479
483
  r->n = n;
480
484
  }
481
- if (e != NULL) {
485
+ if (e != nullptr) {
482
486
  BN_free(r->e);
483
487
  r->e = e;
484
488
  }
485
- if (d != NULL) {
489
+ if (d != nullptr) {
486
490
  BN_free(r->d);
487
491
  r->d = d;
488
492
  }
@@ -491,46 +495,46 @@ static int RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d) {
491
495
  }
492
496
  #endif // OPENSSL_VERSION_NUMBER < 0x10100000L
493
497
 
494
- static EVP_PKEY *pkey_from_jwk(grpc_exec_ctx *exec_ctx, const grpc_json *json,
495
- const char *kty) {
496
- const grpc_json *key_prop;
497
- RSA *rsa = NULL;
498
- EVP_PKEY *result = NULL;
499
- BIGNUM *tmp_n = NULL;
500
- BIGNUM *tmp_e = NULL;
498
+ static EVP_PKEY* pkey_from_jwk(grpc_exec_ctx* exec_ctx, const grpc_json* json,
499
+ const char* kty) {
500
+ const grpc_json* key_prop;
501
+ RSA* rsa = nullptr;
502
+ EVP_PKEY* result = nullptr;
503
+ BIGNUM* tmp_n = nullptr;
504
+ BIGNUM* tmp_e = nullptr;
501
505
 
502
- GPR_ASSERT(kty != NULL && json != NULL);
506
+ GPR_ASSERT(kty != nullptr && json != nullptr);
503
507
  if (strcmp(kty, "RSA") != 0) {
504
508
  gpr_log(GPR_ERROR, "Unsupported key type %s.", kty);
505
509
  goto end;
506
510
  }
507
511
  rsa = RSA_new();
508
- if (rsa == NULL) {
512
+ if (rsa == nullptr) {
509
513
  gpr_log(GPR_ERROR, "Could not create rsa key.");
510
514
  goto end;
511
515
  }
512
- for (key_prop = json->child; key_prop != NULL; key_prop = key_prop->next) {
516
+ for (key_prop = json->child; key_prop != nullptr; key_prop = key_prop->next) {
513
517
  if (strcmp(key_prop->key, "n") == 0) {
514
518
  tmp_n =
515
519
  bignum_from_base64(exec_ctx, validate_string_field(key_prop, "n"));
516
- if (tmp_n == NULL) goto end;
520
+ if (tmp_n == nullptr) goto end;
517
521
  } else if (strcmp(key_prop->key, "e") == 0) {
518
522
  tmp_e =
519
523
  bignum_from_base64(exec_ctx, validate_string_field(key_prop, "e"));
520
- if (tmp_e == NULL) goto end;
524
+ if (tmp_e == nullptr) goto end;
521
525
  }
522
526
  }
523
- if (tmp_e == NULL || tmp_n == NULL) {
527
+ if (tmp_e == nullptr || tmp_n == nullptr) {
524
528
  gpr_log(GPR_ERROR, "Missing RSA public key field.");
525
529
  goto end;
526
530
  }
527
- if (!RSA_set0_key(rsa, tmp_n, tmp_e, NULL)) {
531
+ if (!RSA_set0_key(rsa, tmp_n, tmp_e, nullptr)) {
528
532
  gpr_log(GPR_ERROR, "Cannot set RSA key from inputs.");
529
533
  goto end;
530
534
  }
531
535
  /* RSA_set0_key takes ownership on success. */
532
- tmp_n = NULL;
533
- tmp_e = NULL;
536
+ tmp_n = nullptr;
537
+ tmp_e = nullptr;
534
538
  result = EVP_PKEY_new();
535
539
  EVP_PKEY_set1_RSA(result, rsa); /* uprefs rsa. */
536
540
 
@@ -541,38 +545,39 @@ end:
541
545
  return result;
542
546
  }
543
547
 
544
- static EVP_PKEY *find_verification_key(grpc_exec_ctx *exec_ctx,
545
- const grpc_json *json,
546
- const char *header_alg,
547
- const char *header_kid) {
548
- const grpc_json *jkey;
549
- const grpc_json *jwk_keys;
548
+ static EVP_PKEY* find_verification_key(grpc_exec_ctx* exec_ctx,
549
+ const grpc_json* json,
550
+ const char* header_alg,
551
+ const char* header_kid) {
552
+ const grpc_json* jkey;
553
+ const grpc_json* jwk_keys;
550
554
  /* Try to parse the json as a JWK set:
551
555
  https://tools.ietf.org/html/rfc7517#section-5. */
552
556
  jwk_keys = find_property_by_name(json, "keys");
553
- if (jwk_keys == NULL) {
557
+ if (jwk_keys == nullptr) {
554
558
  /* Use the google proprietary format which is:
555
559
  { <kid1>: <x5091>, <kid2>: <x5092>, ... } */
556
- const grpc_json *cur = find_property_by_name(json, header_kid);
557
- if (cur == NULL) return NULL;
560
+ const grpc_json* cur = find_property_by_name(json, header_kid);
561
+ if (cur == nullptr) return nullptr;
558
562
  return extract_pkey_from_x509(cur->value);
559
563
  }
560
564
 
561
565
  if (jwk_keys->type != GRPC_JSON_ARRAY) {
562
566
  gpr_log(GPR_ERROR,
563
567
  "Unexpected value type of keys property in jwks key set.");
564
- return NULL;
568
+ return nullptr;
565
569
  }
566
570
  /* Key format is specified in:
567
571
  https://tools.ietf.org/html/rfc7518#section-6. */
568
- for (jkey = jwk_keys->child; jkey != NULL; jkey = jkey->next) {
569
- grpc_json *key_prop;
570
- const char *alg = NULL;
571
- const char *kid = NULL;
572
- const char *kty = NULL;
572
+ for (jkey = jwk_keys->child; jkey != nullptr; jkey = jkey->next) {
573
+ grpc_json* key_prop;
574
+ const char* alg = nullptr;
575
+ const char* kid = nullptr;
576
+ const char* kty = nullptr;
573
577
 
574
578
  if (jkey->type != GRPC_JSON_OBJECT) continue;
575
- for (key_prop = jkey->child; key_prop != NULL; key_prop = key_prop->next) {
579
+ for (key_prop = jkey->child; key_prop != nullptr;
580
+ key_prop = key_prop->next) {
576
581
  if (strcmp(key_prop->key, "alg") == 0 &&
577
582
  key_prop->type == GRPC_JSON_STRING) {
578
583
  alg = key_prop->value;
@@ -584,7 +589,7 @@ static EVP_PKEY *find_verification_key(grpc_exec_ctx *exec_ctx,
584
589
  kty = key_prop->value;
585
590
  }
586
591
  }
587
- if (alg != NULL && kid != NULL && kty != NULL &&
592
+ if (alg != nullptr && kid != nullptr && kty != nullptr &&
588
593
  strcmp(kid, header_kid) == 0 && strcmp(alg, header_alg) == 0) {
589
594
  return pkey_from_jwk(exec_ctx, jkey, kty);
590
595
  }
@@ -592,21 +597,21 @@ static EVP_PKEY *find_verification_key(grpc_exec_ctx *exec_ctx,
592
597
  gpr_log(GPR_ERROR,
593
598
  "Could not find matching key in key set for kid=%s and alg=%s",
594
599
  header_kid, header_alg);
595
- return NULL;
600
+ return nullptr;
596
601
  }
597
602
 
598
- static int verify_jwt_signature(EVP_PKEY *key, const char *alg,
603
+ static int verify_jwt_signature(EVP_PKEY* key, const char* alg,
599
604
  grpc_slice signature, grpc_slice signed_data) {
600
- EVP_MD_CTX *md_ctx = EVP_MD_CTX_create();
601
- const EVP_MD *md = evp_md_from_alg(alg);
605
+ EVP_MD_CTX* md_ctx = EVP_MD_CTX_create();
606
+ const EVP_MD* md = evp_md_from_alg(alg);
602
607
  int result = 0;
603
608
 
604
- GPR_ASSERT(md != NULL); /* Checked before. */
605
- if (md_ctx == NULL) {
609
+ GPR_ASSERT(md != nullptr); /* Checked before. */
610
+ if (md_ctx == nullptr) {
606
611
  gpr_log(GPR_ERROR, "Could not create EVP_MD_CTX.");
607
612
  goto end;
608
613
  }
609
- if (EVP_DigestVerifyInit(md_ctx, NULL, md, NULL, key) != 1) {
614
+ if (EVP_DigestVerifyInit(md_ctx, nullptr, md, nullptr, key) != 1) {
610
615
  gpr_log(GPR_ERROR, "EVP_DigestVerifyInit failed.");
611
616
  goto end;
612
617
  }
@@ -627,21 +632,21 @@ end:
627
632
  return result;
628
633
  }
629
634
 
630
- static void on_keys_retrieved(grpc_exec_ctx *exec_ctx, void *user_data,
631
- grpc_error *error) {
632
- verifier_cb_ctx *ctx = (verifier_cb_ctx *)user_data;
633
- grpc_json *json = json_from_http(&ctx->responses[HTTP_RESPONSE_KEYS]);
634
- EVP_PKEY *verification_key = NULL;
635
+ static void on_keys_retrieved(grpc_exec_ctx* exec_ctx, void* user_data,
636
+ grpc_error* error) {
637
+ verifier_cb_ctx* ctx = (verifier_cb_ctx*)user_data;
638
+ grpc_json* json = json_from_http(&ctx->responses[HTTP_RESPONSE_KEYS]);
639
+ EVP_PKEY* verification_key = nullptr;
635
640
  grpc_jwt_verifier_status status = GRPC_JWT_VERIFIER_GENERIC_ERROR;
636
- grpc_jwt_claims *claims = NULL;
641
+ grpc_jwt_claims* claims = nullptr;
637
642
 
638
- if (json == NULL) {
643
+ if (json == nullptr) {
639
644
  status = GRPC_JWT_VERIFIER_KEY_RETRIEVAL_ERROR;
640
645
  goto end;
641
646
  }
642
647
  verification_key =
643
648
  find_verification_key(exec_ctx, json, ctx->header->alg, ctx->header->kid);
644
- if (verification_key == NULL) {
649
+ if (verification_key == nullptr) {
645
650
  gpr_log(GPR_ERROR, "Could not find verification key with kid %s.",
646
651
  ctx->header->kid);
647
652
  status = GRPC_JWT_VERIFIER_KEY_RETRIEVAL_ERROR;
@@ -658,34 +663,35 @@ static void on_keys_retrieved(grpc_exec_ctx *exec_ctx, void *user_data,
658
663
  if (status == GRPC_JWT_VERIFIER_OK) {
659
664
  /* Pass ownership. */
660
665
  claims = ctx->claims;
661
- ctx->claims = NULL;
666
+ ctx->claims = nullptr;
662
667
  }
663
668
 
664
669
  end:
665
- if (json != NULL) grpc_json_destroy(json);
670
+ if (json != nullptr) grpc_json_destroy(json);
666
671
  EVP_PKEY_free(verification_key);
667
672
  ctx->user_cb(exec_ctx, ctx->user_data, status, claims);
668
673
  verifier_cb_ctx_destroy(exec_ctx, ctx);
669
674
  }
670
675
 
671
- static void on_openid_config_retrieved(grpc_exec_ctx *exec_ctx, void *user_data,
672
- grpc_error *error) {
673
- const grpc_json *cur;
674
- verifier_cb_ctx *ctx = (verifier_cb_ctx *)user_data;
675
- const grpc_http_response *response = &ctx->responses[HTTP_RESPONSE_OPENID];
676
- grpc_json *json = json_from_http(response);
676
+ static void on_openid_config_retrieved(grpc_exec_ctx* exec_ctx, void* user_data,
677
+ grpc_error* error) {
678
+ const grpc_json* cur;
679
+ verifier_cb_ctx* ctx = (verifier_cb_ctx*)user_data;
680
+ const grpc_http_response* response = &ctx->responses[HTTP_RESPONSE_OPENID];
681
+ grpc_json* json = json_from_http(response);
677
682
  grpc_httpcli_request req;
678
- const char *jwks_uri;
683
+ const char* jwks_uri;
684
+ grpc_resource_quota* resource_quota = nullptr;
679
685
 
680
686
  /* TODO(jboeuf): Cache the jwks_uri in order to avoid this hop next time. */
681
- if (json == NULL) goto error;
687
+ if (json == nullptr) goto error;
682
688
  cur = find_property_by_name(json, "jwks_uri");
683
- if (cur == NULL) {
689
+ if (cur == nullptr) {
684
690
  gpr_log(GPR_ERROR, "Could not find jwks_uri in openid config.");
685
691
  goto error;
686
692
  }
687
693
  jwks_uri = validate_string_field(cur, "jwks_uri");
688
- if (jwks_uri == NULL) goto error;
694
+ if (jwks_uri == nullptr) goto error;
689
695
  if (strstr(jwks_uri, "https://") != jwks_uri) {
690
696
  gpr_log(GPR_ERROR, "Invalid non https jwks_uri: %s.", jwks_uri);
691
697
  goto error;
@@ -693,9 +699,9 @@ static void on_openid_config_retrieved(grpc_exec_ctx *exec_ctx, void *user_data,
693
699
  jwks_uri += 8;
694
700
  req.handshaker = &grpc_httpcli_ssl;
695
701
  req.host = gpr_strdup(jwks_uri);
696
- req.http.path = strchr(jwks_uri, '/');
697
- if (req.http.path == NULL) {
698
- req.http.path = "";
702
+ req.http.path = (char*)strchr(jwks_uri, '/');
703
+ if (req.http.path == nullptr) {
704
+ req.http.path = (char*)"";
699
705
  } else {
700
706
  *(req.host + (req.http.path - jwks_uri)) = '\0';
701
707
  }
@@ -703,11 +709,10 @@ static void on_openid_config_retrieved(grpc_exec_ctx *exec_ctx, void *user_data,
703
709
  /* TODO(ctiller): Carry the resource_quota in ctx and share it with the host
704
710
  channel. This would allow us to cancel an authentication query when under
705
711
  extreme memory pressure. */
706
- grpc_resource_quota *resource_quota =
707
- grpc_resource_quota_create("jwt_verifier");
712
+ resource_quota = grpc_resource_quota_create("jwt_verifier");
708
713
  grpc_httpcli_get(
709
714
  exec_ctx, &ctx->verifier->http_ctx, &ctx->pollent, resource_quota, &req,
710
- gpr_time_add(gpr_now(GPR_CLOCK_REALTIME), grpc_jwt_verifier_max_delay),
715
+ grpc_exec_ctx_now(exec_ctx) + grpc_jwt_verifier_max_delay,
711
716
  GRPC_CLOSURE_CREATE(on_keys_retrieved, ctx, grpc_schedule_on_exec_ctx),
712
717
  &ctx->responses[HTTP_RESPONSE_KEYS]);
713
718
  grpc_resource_quota_unref_internal(exec_ctx, resource_quota);
@@ -716,29 +721,29 @@ static void on_openid_config_retrieved(grpc_exec_ctx *exec_ctx, void *user_data,
716
721
  return;
717
722
 
718
723
  error:
719
- if (json != NULL) grpc_json_destroy(json);
724
+ if (json != nullptr) grpc_json_destroy(json);
720
725
  ctx->user_cb(exec_ctx, ctx->user_data, GRPC_JWT_VERIFIER_KEY_RETRIEVAL_ERROR,
721
- NULL);
726
+ nullptr);
722
727
  verifier_cb_ctx_destroy(exec_ctx, ctx);
723
728
  }
724
729
 
725
- static email_key_mapping *verifier_get_mapping(grpc_jwt_verifier *v,
726
- const char *email_domain) {
730
+ static email_key_mapping* verifier_get_mapping(grpc_jwt_verifier* v,
731
+ const char* email_domain) {
727
732
  size_t i;
728
- if (v->mappings == NULL) return NULL;
733
+ if (v->mappings == nullptr) return nullptr;
729
734
  for (i = 0; i < v->num_mappings; i++) {
730
735
  if (strcmp(email_domain, v->mappings[i].email_domain) == 0) {
731
736
  return &v->mappings[i];
732
737
  }
733
738
  }
734
- return NULL;
739
+ return nullptr;
735
740
  }
736
741
 
737
- static void verifier_put_mapping(grpc_jwt_verifier *v, const char *email_domain,
738
- const char *key_url_prefix) {
739
- email_key_mapping *mapping = verifier_get_mapping(v, email_domain);
742
+ static void verifier_put_mapping(grpc_jwt_verifier* v, const char* email_domain,
743
+ const char* key_url_prefix) {
744
+ email_key_mapping* mapping = verifier_get_mapping(v, email_domain);
740
745
  GPR_ASSERT(v->num_mappings < v->allocated_mappings);
741
- if (mapping != NULL) {
746
+ if (mapping != nullptr) {
742
747
  gpr_free(mapping->key_url_prefix);
743
748
  mapping->key_url_prefix = gpr_strdup(key_url_prefix);
744
749
  return;
@@ -751,39 +756,42 @@ static void verifier_put_mapping(grpc_jwt_verifier *v, const char *email_domain,
751
756
 
752
757
  /* Very non-sophisticated way to detect an email address. Should be good
753
758
  enough for now... */
754
- const char *grpc_jwt_issuer_email_domain(const char *issuer) {
755
- const char *at_sign = strchr(issuer, '@');
756
- if (at_sign == NULL) return NULL;
757
- const char *email_domain = at_sign + 1;
758
- if (*email_domain == '\0') return NULL;
759
- const char *dot = strrchr(email_domain, '.');
760
- if (dot == NULL || dot == email_domain) return email_domain;
759
+ const char* grpc_jwt_issuer_email_domain(const char* issuer) {
760
+ const char* at_sign = strchr(issuer, '@');
761
+ if (at_sign == nullptr) return nullptr;
762
+ const char* email_domain = at_sign + 1;
763
+ if (*email_domain == '\0') return nullptr;
764
+ const char* dot = strrchr(email_domain, '.');
765
+ if (dot == nullptr || dot == email_domain) return email_domain;
761
766
  GPR_ASSERT(dot > email_domain);
762
767
  /* There may be a subdomain, we just want the domain. */
763
- dot = gpr_memrchr(email_domain, '.', (size_t)(dot - email_domain));
764
- if (dot == NULL) return email_domain;
768
+ dot = (const char*)gpr_memrchr((void*)email_domain, '.',
769
+ (size_t)(dot - email_domain));
770
+ if (dot == nullptr) return email_domain;
765
771
  return dot + 1;
766
772
  }
767
773
 
768
774
  /* Takes ownership of ctx. */
769
- static void retrieve_key_and_verify(grpc_exec_ctx *exec_ctx,
770
- verifier_cb_ctx *ctx) {
771
- const char *email_domain;
772
- grpc_closure *http_cb;
773
- char *path_prefix = NULL;
774
- const char *iss;
775
+ static void retrieve_key_and_verify(grpc_exec_ctx* exec_ctx,
776
+ verifier_cb_ctx* ctx) {
777
+ const char* email_domain;
778
+ grpc_closure* http_cb;
779
+ char* path_prefix = nullptr;
780
+ const char* iss;
775
781
  grpc_httpcli_request req;
782
+ grpc_resource_quota* resource_quota = nullptr;
776
783
  memset(&req, 0, sizeof(grpc_httpcli_request));
777
784
  req.handshaker = &grpc_httpcli_ssl;
778
785
  http_response_index rsp_idx;
779
786
 
780
- GPR_ASSERT(ctx != NULL && ctx->header != NULL && ctx->claims != NULL);
787
+ GPR_ASSERT(ctx != nullptr && ctx->header != nullptr &&
788
+ ctx->claims != nullptr);
781
789
  iss = ctx->claims->iss;
782
- if (ctx->header->kid == NULL) {
790
+ if (ctx->header->kid == nullptr) {
783
791
  gpr_log(GPR_ERROR, "Missing kid in jose header.");
784
792
  goto error;
785
793
  }
786
- if (iss == NULL) {
794
+ if (iss == nullptr) {
787
795
  gpr_log(GPR_ERROR, "Missing iss in claims.");
788
796
  goto error;
789
797
  }
@@ -794,17 +802,17 @@ static void retrieve_key_and_verify(grpc_exec_ctx *exec_ctx,
794
802
  so we will rely instead on email/url mappings if we detect such an issuer.
795
803
  Part 4, on the other hand is implemented by both google and salesforce. */
796
804
  email_domain = grpc_jwt_issuer_email_domain(iss);
797
- if (email_domain != NULL) {
798
- email_key_mapping *mapping;
799
- GPR_ASSERT(ctx->verifier != NULL);
805
+ if (email_domain != nullptr) {
806
+ email_key_mapping* mapping;
807
+ GPR_ASSERT(ctx->verifier != nullptr);
800
808
  mapping = verifier_get_mapping(ctx->verifier, email_domain);
801
- if (mapping == NULL) {
809
+ if (mapping == nullptr) {
802
810
  gpr_log(GPR_ERROR, "Missing mapping for issuer email.");
803
811
  goto error;
804
812
  }
805
813
  req.host = gpr_strdup(mapping->key_url_prefix);
806
814
  path_prefix = strchr(req.host, '/');
807
- if (path_prefix == NULL) {
815
+ if (path_prefix == nullptr) {
808
816
  gpr_asprintf(&req.http.path, "/%s", iss);
809
817
  } else {
810
818
  *(path_prefix++) = '\0';
@@ -816,7 +824,7 @@ static void retrieve_key_and_verify(grpc_exec_ctx *exec_ctx,
816
824
  } else {
817
825
  req.host = gpr_strdup(strstr(iss, "https://") == iss ? iss + 8 : iss);
818
826
  path_prefix = strchr(req.host, '/');
819
- if (path_prefix == NULL) {
827
+ if (path_prefix == nullptr) {
820
828
  req.http.path = gpr_strdup(GRPC_OPENID_CONFIG_URL_SUFFIX);
821
829
  } else {
822
830
  *(path_prefix++) = 0;
@@ -831,12 +839,11 @@ static void retrieve_key_and_verify(grpc_exec_ctx *exec_ctx,
831
839
  /* TODO(ctiller): Carry the resource_quota in ctx and share it with the host
832
840
  channel. This would allow us to cancel an authentication query when under
833
841
  extreme memory pressure. */
834
- grpc_resource_quota *resource_quota =
835
- grpc_resource_quota_create("jwt_verifier");
836
- grpc_httpcli_get(
837
- exec_ctx, &ctx->verifier->http_ctx, &ctx->pollent, resource_quota, &req,
838
- gpr_time_add(gpr_now(GPR_CLOCK_REALTIME), grpc_jwt_verifier_max_delay),
839
- http_cb, &ctx->responses[rsp_idx]);
842
+ resource_quota = grpc_resource_quota_create("jwt_verifier");
843
+ grpc_httpcli_get(exec_ctx, &ctx->verifier->http_ctx, &ctx->pollent,
844
+ resource_quota, &req,
845
+ grpc_exec_ctx_now(exec_ctx) + grpc_jwt_verifier_max_delay,
846
+ http_cb, &ctx->responses[rsp_idx]);
840
847
  grpc_resource_quota_unref_internal(exec_ctx, resource_quota);
841
848
  gpr_free(req.host);
842
849
  gpr_free(req.http.path);
@@ -844,43 +851,44 @@ static void retrieve_key_and_verify(grpc_exec_ctx *exec_ctx,
844
851
 
845
852
  error:
846
853
  ctx->user_cb(exec_ctx, ctx->user_data, GRPC_JWT_VERIFIER_KEY_RETRIEVAL_ERROR,
847
- NULL);
854
+ nullptr);
848
855
  verifier_cb_ctx_destroy(exec_ctx, ctx);
849
856
  }
850
857
 
851
- void grpc_jwt_verifier_verify(grpc_exec_ctx *exec_ctx,
852
- grpc_jwt_verifier *verifier,
853
- grpc_pollset *pollset, const char *jwt,
854
- const char *audience,
858
+ void grpc_jwt_verifier_verify(grpc_exec_ctx* exec_ctx,
859
+ grpc_jwt_verifier* verifier,
860
+ grpc_pollset* pollset, const char* jwt,
861
+ const char* audience,
855
862
  grpc_jwt_verification_done_cb cb,
856
- void *user_data) {
857
- const char *dot = NULL;
858
- grpc_json *json;
859
- jose_header *header = NULL;
860
- grpc_jwt_claims *claims = NULL;
863
+ void* user_data) {
864
+ const char* dot = nullptr;
865
+ grpc_json* json;
866
+ jose_header* header = nullptr;
867
+ grpc_jwt_claims* claims = nullptr;
861
868
  grpc_slice header_buffer;
862
869
  grpc_slice claims_buffer;
863
870
  grpc_slice signature;
864
871
  size_t signed_jwt_len;
865
- const char *cur = jwt;
872
+ const char* cur = jwt;
866
873
 
867
- GPR_ASSERT(verifier != NULL && jwt != NULL && audience != NULL && cb != NULL);
874
+ GPR_ASSERT(verifier != nullptr && jwt != nullptr && audience != nullptr &&
875
+ cb != nullptr);
868
876
  dot = strchr(cur, '.');
869
- if (dot == NULL) goto error;
877
+ if (dot == nullptr) goto error;
870
878
  json = parse_json_part_from_jwt(exec_ctx, cur, (size_t)(dot - cur),
871
879
  &header_buffer);
872
- if (json == NULL) goto error;
880
+ if (json == nullptr) goto error;
873
881
  header = jose_header_from_json(exec_ctx, json, header_buffer);
874
- if (header == NULL) goto error;
882
+ if (header == nullptr) goto error;
875
883
 
876
884
  cur = dot + 1;
877
885
  dot = strchr(cur, '.');
878
- if (dot == NULL) goto error;
886
+ if (dot == nullptr) goto error;
879
887
  json = parse_json_part_from_jwt(exec_ctx, cur, (size_t)(dot - cur),
880
888
  &claims_buffer);
881
- if (json == NULL) goto error;
889
+ if (json == nullptr) goto error;
882
890
  claims = grpc_jwt_claims_from_json(exec_ctx, json, claims_buffer);
883
- if (claims == NULL) goto error;
891
+ if (claims == nullptr) goto error;
884
892
 
885
893
  signed_jwt_len = (size_t)(dot - jwt);
886
894
  cur = dot + 1;
@@ -893,24 +901,26 @@ void grpc_jwt_verifier_verify(grpc_exec_ctx *exec_ctx,
893
901
  return;
894
902
 
895
903
  error:
896
- if (header != NULL) jose_header_destroy(exec_ctx, header);
897
- if (claims != NULL) grpc_jwt_claims_destroy(exec_ctx, claims);
898
- cb(exec_ctx, user_data, GRPC_JWT_VERIFIER_BAD_FORMAT, NULL);
904
+ if (header != nullptr) jose_header_destroy(exec_ctx, header);
905
+ if (claims != nullptr) grpc_jwt_claims_destroy(exec_ctx, claims);
906
+ cb(exec_ctx, user_data, GRPC_JWT_VERIFIER_BAD_FORMAT, nullptr);
899
907
  }
900
908
 
901
- grpc_jwt_verifier *grpc_jwt_verifier_create(
902
- const grpc_jwt_verifier_email_domain_key_url_mapping *mappings,
909
+ grpc_jwt_verifier* grpc_jwt_verifier_create(
910
+ const grpc_jwt_verifier_email_domain_key_url_mapping* mappings,
903
911
  size_t num_mappings) {
904
- grpc_jwt_verifier *v = gpr_zalloc(sizeof(grpc_jwt_verifier));
912
+ grpc_jwt_verifier* v =
913
+ (grpc_jwt_verifier*)gpr_zalloc(sizeof(grpc_jwt_verifier));
905
914
  grpc_httpcli_context_init(&v->http_ctx);
906
915
 
907
916
  /* We know at least of one mapping. */
908
917
  v->allocated_mappings = 1 + num_mappings;
909
- v->mappings = gpr_malloc(v->allocated_mappings * sizeof(email_key_mapping));
918
+ v->mappings = (email_key_mapping*)gpr_malloc(v->allocated_mappings *
919
+ sizeof(email_key_mapping));
910
920
  verifier_put_mapping(v, GRPC_GOOGLE_SERVICE_ACCOUNTS_EMAIL_DOMAIN,
911
921
  GRPC_GOOGLE_SERVICE_ACCOUNTS_KEY_URL_PREFIX);
912
922
  /* User-Provided mappings. */
913
- if (mappings != NULL) {
923
+ if (mappings != nullptr) {
914
924
  size_t i;
915
925
  for (i = 0; i < num_mappings; i++) {
916
926
  verifier_put_mapping(v, mappings[i].email_domain,
@@ -920,11 +930,11 @@ grpc_jwt_verifier *grpc_jwt_verifier_create(
920
930
  return v;
921
931
  }
922
932
 
923
- void grpc_jwt_verifier_destroy(grpc_exec_ctx *exec_ctx, grpc_jwt_verifier *v) {
933
+ void grpc_jwt_verifier_destroy(grpc_exec_ctx* exec_ctx, grpc_jwt_verifier* v) {
924
934
  size_t i;
925
- if (v == NULL) return;
935
+ if (v == nullptr) return;
926
936
  grpc_httpcli_context_destroy(exec_ctx, &v->http_ctx);
927
- if (v->mappings != NULL) {
937
+ if (v->mappings != nullptr) {
928
938
  for (i = 0; i < v->num_mappings; i++) {
929
939
  gpr_free(v->mappings[i].email_domain);
930
940
  gpr_free(v->mappings[i].key_url_prefix);