grpc 0.13.1 → 0.14.1.pre1

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 (724) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +2098 -828
  3. data/include/grpc/byte_buffer.h +1 -1
  4. data/include/grpc/byte_buffer_reader.h +1 -20
  5. data/include/grpc/census.h +4 -4
  6. data/include/grpc/compression.h +6 -5
  7. data/include/grpc/grpc.h +31 -20
  8. data/include/grpc/grpc_security.h +17 -31
  9. data/include/grpc/grpc_security_constants.h +114 -0
  10. data/include/grpc/grpc_zookeeper.h +1 -1
  11. data/include/grpc/impl/codegen/alloc.h +1 -1
  12. data/include/grpc/impl/codegen/atm.h +1 -1
  13. data/include/grpc/impl/codegen/atm_gcc_atomic.h +1 -1
  14. data/include/grpc/impl/codegen/atm_gcc_sync.h +1 -1
  15. data/include/grpc/impl/codegen/atm_win32.h +1 -1
  16. data/include/grpc/impl/codegen/byte_buffer.h +1 -1
  17. data/{src/core/client_config/lb_policies/round_robin.h → include/grpc/impl/codegen/byte_buffer_reader.h} +19 -8
  18. data/include/grpc/impl/codegen/grpc_types.h +20 -3
  19. data/include/grpc/impl/codegen/log.h +9 -2
  20. data/include/grpc/impl/codegen/port_platform.h +102 -17
  21. data/include/grpc/impl/codegen/propagation_bits.h +3 -3
  22. data/include/grpc/impl/codegen/slice.h +3 -3
  23. data/include/grpc/impl/codegen/slice_buffer.h +3 -3
  24. data/include/grpc/impl/codegen/status.h +1 -1
  25. data/include/grpc/impl/codegen/sync_generic.h +1 -1
  26. data/include/grpc/impl/codegen/sync_posix.h +1 -1
  27. data/include/grpc/impl/codegen/sync_win32.h +1 -1
  28. data/include/grpc/impl/codegen/time.h +3 -3
  29. data/include/grpc/status.h +1 -1
  30. data/include/grpc/support/alloc.h +1 -1
  31. data/include/grpc/support/atm.h +1 -1
  32. data/include/grpc/support/atm_gcc_atomic.h +4 -4
  33. data/include/grpc/support/atm_gcc_sync.h +1 -1
  34. data/include/grpc/support/atm_win32.h +1 -1
  35. data/include/grpc/support/avl.h +1 -1
  36. data/include/grpc/support/cmdline.h +1 -1
  37. data/include/grpc/support/cpu.h +1 -1
  38. data/include/grpc/support/histogram.h +1 -1
  39. data/include/grpc/support/host_port.h +1 -1
  40. data/include/grpc/support/log.h +1 -1
  41. data/include/grpc/support/log_win32.h +1 -1
  42. data/include/grpc/support/port_platform.h +1 -1
  43. data/include/grpc/support/slice.h +1 -1
  44. data/include/grpc/support/slice_buffer.h +1 -1
  45. data/include/grpc/support/string_util.h +3 -1
  46. data/include/grpc/support/subprocess.h +2 -2
  47. data/include/grpc/support/sync.h +1 -1
  48. data/include/grpc/support/sync_generic.h +1 -1
  49. data/include/grpc/support/sync_posix.h +1 -1
  50. data/include/grpc/support/sync_win32.h +1 -1
  51. data/include/grpc/support/thd.h +1 -1
  52. data/include/grpc/support/time.h +1 -1
  53. data/include/grpc/support/tls.h +1 -1
  54. data/include/grpc/support/tls_gcc.h +45 -1
  55. data/include/grpc/support/tls_msvc.h +3 -3
  56. data/include/grpc/support/tls_pthread.h +1 -1
  57. data/include/grpc/support/useful.h +1 -1
  58. data/src/boringssl/err_data.c +258 -252
  59. data/src/core/{census → ext/census}/aggregation.h +3 -3
  60. data/src/core/{statistics → ext/census}/census_interface.h +3 -3
  61. data/src/core/{statistics → ext/census}/census_rpc_stats.h +4 -4
  62. data/src/core/{census → ext/census}/context.c +2 -2
  63. data/src/core/{census → ext/census}/grpc_context.c +2 -2
  64. data/src/core/{census → ext/census}/grpc_filter.c +30 -16
  65. data/src/core/{census → ext/census}/grpc_filter.h +4 -4
  66. data/src/core/ext/census/grpc_plugin.c +82 -0
  67. data/src/core/{census → ext/census}/initialize.c +1 -1
  68. data/src/core/{census → ext/census}/mlog.c +2 -2
  69. data/src/core/{census → ext/census}/mlog.h +4 -4
  70. data/src/core/{census → ext/census}/operation.c +0 -0
  71. data/src/core/{census → ext/census}/placeholders.c +0 -0
  72. data/src/core/{census → ext/census}/rpc_metric_id.h +3 -3
  73. data/src/core/{census → ext/census}/tracing.c +0 -0
  74. data/src/core/{surface → ext/client_config}/channel_connectivity.c +8 -21
  75. data/src/core/{channel → ext/client_config}/client_channel.c +80 -35
  76. data/src/core/{channel → ext/client_config}/client_channel.h +5 -5
  77. data/src/core/{client_config/subchannel_factory.c → ext/client_config/client_channel_factory.c} +14 -6
  78. data/src/core/ext/client_config/client_channel_factory.h +85 -0
  79. data/src/core/{client_config → ext/client_config}/client_config.c +4 -2
  80. data/src/core/{client_config → ext/client_config}/client_config.h +4 -4
  81. data/src/core/ext/client_config/client_config_plugin.c +95 -0
  82. data/src/core/{client_config → ext/client_config}/connector.c +2 -2
  83. data/src/core/{client_config → ext/client_config}/connector.h +7 -10
  84. data/src/core/{client_config → ext/client_config}/default_initial_connect_string.c +1 -1
  85. data/src/core/{client_config → ext/client_config}/initial_connect_string.c +1 -1
  86. data/src/core/{client_config → ext/client_config}/initial_connect_string.h +4 -4
  87. data/src/core/{client_config → ext/client_config}/lb_policy.c +12 -3
  88. data/src/core/{client_config → ext/client_config}/lb_policy.h +19 -6
  89. data/src/core/{client_config → ext/client_config}/lb_policy_factory.c +4 -3
  90. data/src/core/{client_config → ext/client_config}/lb_policy_factory.h +14 -9
  91. data/src/core/{client_config → ext/client_config}/lb_policy_registry.c +4 -9
  92. data/src/core/{client_config → ext/client_config}/lb_policy_registry.h +7 -6
  93. data/src/core/ext/client_config/parse_address.c +137 -0
  94. data/src/core/ext/client_config/parse_address.h +56 -0
  95. data/src/core/{client_config → ext/client_config}/resolver.c +1 -1
  96. data/src/core/{client_config → ext/client_config}/resolver.h +6 -6
  97. data/src/core/{client_config → ext/client_config}/resolver_factory.c +1 -1
  98. data/src/core/{client_config → ext/client_config}/resolver_factory.h +7 -7
  99. data/src/core/{client_config → ext/client_config}/resolver_registry.c +25 -11
  100. data/src/core/{client_config → ext/client_config}/resolver_registry.h +9 -5
  101. data/src/core/{client_config → ext/client_config}/subchannel.c +90 -126
  102. data/src/core/{client_config → ext/client_config}/subchannel.h +15 -15
  103. data/src/core/{channel → ext/client_config}/subchannel_call_holder.c +9 -8
  104. data/src/core/{channel → ext/client_config}/subchannel_call_holder.h +7 -7
  105. data/src/core/{client_config → ext/client_config}/subchannel_index.c +3 -2
  106. data/src/core/{client_config → ext/client_config}/subchannel_index.h +5 -5
  107. data/src/core/{client_config → ext/client_config}/uri_parser.c +69 -1
  108. data/src/core/{client_config → ext/client_config}/uri_parser.h +15 -3
  109. data/src/core/{client_config/lb_policies → ext/lb_policy/grpclb}/load_balancer_api.c +18 -9
  110. data/src/core/{client_config/lb_policies → ext/lb_policy/grpclb}/load_balancer_api.h +5 -5
  111. data/src/core/{proto → ext/lb_policy/grpclb/proto}/grpc/lb/v0/load_balancer.pb.c +1 -1
  112. data/src/core/{proto → ext/lb_policy/grpclb/proto}/grpc/lb/v0/load_balancer.pb.h +0 -0
  113. data/src/core/{client_config/lb_policies → ext/lb_policy/pick_first}/pick_first.c +95 -32
  114. data/src/core/{client_config/lb_policies → ext/lb_policy/round_robin}/round_robin.c +98 -34
  115. data/src/core/{client_config/resolvers → ext/resolver/dns/native}/dns_resolver.c +83 -39
  116. data/src/core/{client_config/resolvers → ext/resolver/sockaddr}/sockaddr_resolver.c +66 -169
  117. data/src/core/{transport/chttp2 → ext/transport/chttp2/alpn}/alpn.c +1 -1
  118. data/src/core/{transport/chttp2 → ext/transport/chttp2/alpn}/alpn.h +3 -3
  119. data/src/core/{surface → ext/transport/chttp2/client/insecure}/channel_create.c +65 -59
  120. data/src/core/{surface → ext/transport/chttp2/client/secure}/secure_channel_create.c +77 -69
  121. data/src/core/{surface → ext/transport/chttp2/server/insecure}/server_chttp2.c +8 -11
  122. data/src/core/{security → ext/transport/chttp2/server/secure}/server_secure_chttp2.c +14 -17
  123. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/bin_encoder.c +28 -74
  124. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/bin_encoder.h +5 -5
  125. data/src/core/ext/transport/chttp2/transport/chttp2_plugin.c +46 -0
  126. data/src/core/{transport → ext/transport/chttp2/transport}/chttp2_transport.c +551 -310
  127. data/src/core/{transport → ext/transport/chttp2/transport}/chttp2_transport.h +5 -5
  128. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame.h +3 -3
  129. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_data.c +30 -14
  130. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_data.h +10 -7
  131. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_goaway.c +2 -2
  132. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_goaway.h +5 -5
  133. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_ping.c +2 -2
  134. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_ping.h +5 -5
  135. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_rst_stream.c +9 -5
  136. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_rst_stream.h +8 -6
  137. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_settings.c +6 -6
  138. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_settings.h +5 -5
  139. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_window_update.c +11 -5
  140. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_window_update.h +8 -6
  141. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/hpack_encoder.c +21 -12
  142. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/hpack_encoder.h +8 -6
  143. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/hpack_parser.c +42 -25
  144. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/hpack_parser.h +7 -7
  145. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/hpack_table.c +21 -11
  146. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/hpack_table.h +4 -4
  147. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/http2_errors.h +3 -3
  148. data/src/core/ext/transport/chttp2/transport/huffsyms.c +105 -0
  149. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/huffsyms.h +3 -3
  150. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/incoming_metadata.c +2 -2
  151. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/incoming_metadata.h +4 -4
  152. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/internal.h +81 -37
  153. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/parsing.c +54 -21
  154. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/status_conversion.c +1 -1
  155. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/status_conversion.h +4 -4
  156. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/stream_lists.c +10 -2
  157. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/stream_map.c +1 -1
  158. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/stream_map.h +3 -3
  159. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/timeout_encoding.c +4 -4
  160. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/timeout_encoding.h +4 -4
  161. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/varint.c +1 -1
  162. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/varint.h +3 -3
  163. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/writing.c +30 -20
  164. data/src/core/{channel → lib/channel}/channel_args.c +3 -15
  165. data/src/core/{channel → lib/channel}/channel_args.h +11 -15
  166. data/src/core/{channel → lib/channel}/channel_stack.c +5 -3
  167. data/src/core/{channel → lib/channel}/channel_stack.h +13 -8
  168. data/src/core/lib/channel/channel_stack_builder.c +277 -0
  169. data/src/core/lib/channel/channel_stack_builder.h +161 -0
  170. data/src/core/{channel → lib/channel}/compress_filter.c +51 -16
  171. data/src/core/{channel → lib/channel}/compress_filter.h +6 -4
  172. data/src/core/{channel → lib/channel}/connected_channel.c +34 -24
  173. data/src/core/lib/channel/connected_channel.h +42 -0
  174. data/src/core/{channel → lib/channel}/context.h +3 -3
  175. data/src/core/{channel → lib/channel}/http_client_filter.c +24 -13
  176. data/src/core/{channel → lib/channel}/http_client_filter.h +4 -4
  177. data/src/core/{channel → lib/channel}/http_server_filter.c +39 -19
  178. data/src/core/{channel → lib/channel}/http_server_filter.h +4 -4
  179. data/src/core/{compression → lib/compression}/algorithm_metadata.h +4 -4
  180. data/src/core/{compression → lib/compression}/compression_algorithm.c +46 -9
  181. data/src/core/{compression → lib/compression}/message_compress.c +1 -1
  182. data/src/core/{compression → lib/compression}/message_compress.h +3 -3
  183. data/src/core/{debug → lib/debug}/trace.c +2 -2
  184. data/src/core/{debug → lib/debug}/trace.h +3 -3
  185. data/src/core/{httpcli → lib/http}/format_request.c +8 -8
  186. data/src/core/{httpcli → lib/http}/format_request.h +4 -4
  187. data/src/core/{httpcli → lib/http}/httpcli.c +24 -19
  188. data/src/core/{httpcli → lib/http}/httpcli.h +14 -33
  189. data/src/core/{httpcli → lib/http}/httpcli_security_connector.c +5 -5
  190. data/src/core/lib/http/parser.c +341 -0
  191. data/src/core/lib/http/parser.h +119 -0
  192. data/src/core/{iomgr → lib/iomgr}/closure.c +8 -2
  193. data/src/core/{iomgr → lib/iomgr}/closure.h +7 -4
  194. data/src/core/{iomgr → lib/iomgr}/endpoint.c +1 -1
  195. data/src/core/{iomgr → lib/iomgr}/endpoint.h +5 -5
  196. data/src/core/{iomgr → lib/iomgr}/endpoint_pair.h +4 -4
  197. data/src/core/{iomgr → lib/iomgr}/endpoint_pair_posix.c +8 -7
  198. data/src/core/{iomgr → lib/iomgr}/endpoint_pair_windows.c +4 -4
  199. data/src/core/lib/iomgr/ev_poll_and_epoll_posix.c +1936 -0
  200. data/src/core/lib/iomgr/ev_poll_and_epoll_posix.h +41 -0
  201. data/src/core/lib/iomgr/ev_posix.c +164 -0
  202. data/src/core/lib/iomgr/ev_posix.h +158 -0
  203. data/src/core/{iomgr → lib/iomgr}/exec_ctx.c +78 -3
  204. data/src/core/{iomgr → lib/iomgr}/exec_ctx.h +25 -10
  205. data/src/core/{iomgr → lib/iomgr}/executor.c +3 -3
  206. data/src/core/{iomgr → lib/iomgr}/executor.h +5 -5
  207. data/src/core/{iomgr → lib/iomgr}/iocp_windows.c +6 -6
  208. data/src/core/{iomgr → lib/iomgr}/iocp_windows.h +5 -5
  209. data/src/core/{iomgr → lib/iomgr}/iomgr.c +13 -10
  210. data/src/core/{iomgr → lib/iomgr}/iomgr.h +3 -3
  211. data/src/core/{iomgr → lib/iomgr}/iomgr_internal.h +5 -9
  212. data/src/core/{iomgr → lib/iomgr}/iomgr_posix.c +6 -6
  213. data/src/core/{iomgr → lib/iomgr}/iomgr_posix.h +4 -4
  214. data/src/core/{iomgr → lib/iomgr}/iomgr_windows.c +7 -4
  215. data/src/core/{iomgr → lib/iomgr}/pollset.h +11 -11
  216. data/src/core/{iomgr → lib/iomgr}/pollset_set.h +5 -5
  217. data/src/core/{iomgr → lib/iomgr}/pollset_set_windows.c +2 -2
  218. data/src/core/lib/iomgr/pollset_set_windows.h +39 -0
  219. data/src/core/{iomgr → lib/iomgr}/pollset_windows.c +7 -7
  220. data/src/core/{iomgr → lib/iomgr}/pollset_windows.h +8 -5
  221. data/src/core/{iomgr → lib/iomgr}/resolve_address.h +10 -9
  222. data/src/core/{iomgr → lib/iomgr}/resolve_address_posix.c +22 -22
  223. data/src/core/{iomgr → lib/iomgr}/resolve_address_windows.c +20 -12
  224. data/src/core/{iomgr → lib/iomgr}/sockaddr.h +5 -5
  225. data/src/core/{iomgr → lib/iomgr}/sockaddr_posix.h +5 -5
  226. data/src/core/{iomgr → lib/iomgr}/sockaddr_utils.c +9 -16
  227. data/src/core/{iomgr → lib/iomgr}/sockaddr_utils.h +4 -4
  228. data/src/core/{iomgr → lib/iomgr}/sockaddr_win32.h +6 -4
  229. data/src/core/{iomgr → lib/iomgr}/socket_utils_common_posix.c +29 -7
  230. data/src/core/{iomgr → lib/iomgr}/socket_utils_linux.c +2 -2
  231. data/src/core/{iomgr → lib/iomgr}/socket_utils_posix.c +1 -1
  232. data/src/core/{iomgr → lib/iomgr}/socket_utils_posix.h +14 -4
  233. data/src/core/{iomgr → lib/iomgr}/socket_windows.c +7 -5
  234. data/src/core/{iomgr → lib/iomgr}/socket_windows.h +6 -6
  235. data/src/core/{iomgr → lib/iomgr}/tcp_client.h +6 -6
  236. data/src/core/{iomgr → lib/iomgr}/tcp_client_posix.c +33 -18
  237. data/src/core/{iomgr → lib/iomgr}/tcp_client_windows.c +30 -20
  238. data/src/core/{iomgr → lib/iomgr}/tcp_posix.c +9 -10
  239. data/src/core/{iomgr → lib/iomgr}/tcp_posix.h +6 -6
  240. data/src/core/{iomgr → lib/iomgr}/tcp_server.h +6 -6
  241. data/src/core/{iomgr → lib/iomgr}/tcp_server_posix.c +24 -37
  242. data/src/core/{iomgr → lib/iomgr}/tcp_server_windows.c +8 -36
  243. data/src/core/{iomgr → lib/iomgr}/tcp_windows.c +27 -17
  244. data/src/core/{iomgr → lib/iomgr}/tcp_windows.h +5 -5
  245. data/src/core/{iomgr → lib/iomgr}/time_averaged_stats.c +1 -1
  246. data/src/core/{iomgr → lib/iomgr}/time_averaged_stats.h +3 -3
  247. data/src/core/{iomgr → lib/iomgr}/timer.c +31 -4
  248. data/src/core/{iomgr → lib/iomgr}/timer.h +6 -7
  249. data/src/core/{iomgr → lib/iomgr}/timer_heap.c +2 -2
  250. data/src/core/{iomgr → lib/iomgr}/timer_heap.h +4 -4
  251. data/src/core/{iomgr → lib/iomgr}/udp_server.c +13 -37
  252. data/src/core/{iomgr → lib/iomgr}/udp_server.h +11 -10
  253. data/src/core/lib/iomgr/unix_sockets_posix.c +89 -0
  254. data/src/core/{client_config/resolvers/sockaddr_resolver.h → lib/iomgr/unix_sockets_posix.h} +15 -11
  255. data/src/core/lib/iomgr/unix_sockets_posix_noop.c +59 -0
  256. data/src/core/{iomgr → lib/iomgr}/wakeup_fd_eventfd.c +2 -2
  257. data/src/core/{iomgr → lib/iomgr}/wakeup_fd_nospecial.c +1 -1
  258. data/src/core/{iomgr → lib/iomgr}/wakeup_fd_pipe.c +8 -3
  259. data/src/core/{iomgr → lib/iomgr}/wakeup_fd_pipe.h +4 -4
  260. data/src/core/{iomgr → lib/iomgr}/wakeup_fd_posix.c +2 -2
  261. data/src/core/{iomgr → lib/iomgr}/wakeup_fd_posix.h +3 -3
  262. data/src/core/{iomgr → lib/iomgr}/workqueue.h +10 -10
  263. data/src/core/{iomgr → lib/iomgr}/workqueue_posix.c +5 -6
  264. data/src/core/{iomgr → lib/iomgr}/workqueue_posix.h +5 -5
  265. data/src/core/{iomgr → lib/iomgr}/workqueue_windows.c +1 -1
  266. data/src/core/{iomgr → lib/iomgr}/workqueue_windows.h +3 -3
  267. data/src/core/{json → lib/json}/json.c +1 -1
  268. data/src/core/{json → lib/json}/json.h +4 -4
  269. data/src/core/{json → lib/json}/json_common.h +3 -3
  270. data/src/core/{json → lib/json}/json_reader.c +16 -4
  271. data/src/core/{json → lib/json}/json_reader.h +4 -4
  272. data/src/core/{json → lib/json}/json_string.c +4 -4
  273. data/src/core/{json → lib/json}/json_writer.c +1 -1
  274. data/src/core/{json → lib/json}/json_writer.h +4 -4
  275. data/src/core/{profiling → lib/profiling}/basic_timers.c +3 -2
  276. data/src/core/{profiling → lib/profiling}/stap_timers.c +2 -2
  277. data/src/core/{profiling → lib/profiling}/timers.h +3 -3
  278. data/src/core/{security → lib/security}/auth_filters.h +4 -4
  279. data/src/core/{security → lib/security}/b64.c +2 -2
  280. data/src/core/{security → lib/security}/b64.h +4 -4
  281. data/src/core/{security → lib/security}/client_auth_filter.c +16 -16
  282. data/src/core/{security → lib/security}/credentials.c +42 -26
  283. data/src/core/{security → lib/security}/credentials.h +11 -10
  284. data/src/core/{security → lib/security}/credentials_metadata.c +1 -1
  285. data/src/core/{security → lib/security}/credentials_posix.c +3 -3
  286. data/src/core/{security → lib/security}/credentials_win32.c +3 -3
  287. data/src/core/{security → lib/security}/google_default_credentials.c +10 -9
  288. data/src/core/{security → lib/security}/handshake.c +4 -4
  289. data/src/core/{security → lib/security}/handshake.h +6 -6
  290. data/src/core/{security → lib/security}/json_token.c +4 -4
  291. data/src/core/{security → lib/security}/json_token.h +4 -4
  292. data/src/core/{security → lib/security}/jwt_verifier.c +14 -14
  293. data/src/core/{security → lib/security}/jwt_verifier.h +5 -5
  294. data/src/core/{security → lib/security}/secure_endpoint.c +9 -8
  295. data/src/core/{security → lib/security}/secure_endpoint.h +4 -4
  296. data/src/core/{security → lib/security}/security_connector.c +53 -21
  297. data/src/core/{security → lib/security}/security_connector.h +8 -8
  298. data/src/core/{security → lib/security}/security_context.c +5 -5
  299. data/src/core/{security → lib/security}/security_context.h +5 -5
  300. data/src/core/{security → lib/security}/server_auth_filter.c +9 -9
  301. data/src/core/{support → lib/support}/alloc.c +5 -3
  302. data/src/core/{support → lib/support}/avl.c +1 -1
  303. data/src/core/lib/support/backoff.c +76 -0
  304. data/src/core/lib/support/backoff.h +68 -0
  305. data/src/core/{support → lib/support}/block_annotate.h +3 -3
  306. data/src/core/{support → lib/support}/cmdline.c +1 -1
  307. data/src/core/{support → lib/support}/cpu_iphone.c +0 -0
  308. data/src/core/{support → lib/support}/cpu_linux.c +2 -2
  309. data/src/core/{support → lib/support}/cpu_posix.c +2 -2
  310. data/src/core/{support → lib/support}/cpu_windows.c +0 -0
  311. data/src/core/{support → lib/support}/env.h +3 -3
  312. data/src/core/{support → lib/support}/env_linux.c +3 -3
  313. data/src/core/{support → lib/support}/env_posix.c +2 -2
  314. data/src/core/{support → lib/support}/env_win32.c +27 -21
  315. data/src/core/{support → lib/support}/histogram.c +1 -1
  316. data/src/core/{support → lib/support}/host_port.c +1 -1
  317. data/src/core/{support → lib/support}/load_file.c +4 -4
  318. data/src/core/{support → lib/support}/load_file.h +4 -4
  319. data/src/core/{support → lib/support}/log.c +33 -0
  320. data/src/core/{support → lib/support}/log_android.c +2 -2
  321. data/src/core/{support → lib/support}/log_linux.c +6 -5
  322. data/src/core/{support → lib/support}/log_posix.c +3 -3
  323. data/src/core/{support → lib/support}/log_win32.c +8 -22
  324. data/src/core/{support → lib/support}/murmur_hash.c +1 -1
  325. data/src/core/{support → lib/support}/murmur_hash.h +3 -3
  326. data/src/core/{support → lib/support}/slice.c +0 -0
  327. data/src/core/{support → lib/support}/slice_buffer.c +0 -0
  328. data/src/core/{support → lib/support}/stack_lockfree.c +7 -7
  329. data/src/core/{support → lib/support}/stack_lockfree.h +3 -3
  330. data/src/core/{support → lib/support}/string.c +1 -1
  331. data/src/core/{support → lib/support}/string.h +4 -4
  332. data/src/core/{support → lib/support}/string_posix.c +1 -1
  333. data/src/core/{support/string_win32.c → lib/support/string_util_win32.c} +23 -38
  334. data/src/core/lib/support/string_win32.c +83 -0
  335. data/src/core/{support → lib/support}/string_win32.h +3 -3
  336. data/src/core/{support → lib/support}/subprocess_posix.c +3 -3
  337. data/src/core/{support → lib/support}/subprocess_windows.c +3 -3
  338. data/src/core/{support → lib/support}/sync.c +2 -2
  339. data/src/core/{support → lib/support}/sync_posix.c +3 -3
  340. data/src/core/{support → lib/support}/sync_win32.c +1 -1
  341. data/src/core/{support → lib/support}/thd.c +0 -0
  342. data/src/core/{support → lib/support}/thd_internal.h +3 -3
  343. data/src/core/{support → lib/support}/thd_posix.c +4 -3
  344. data/src/core/{support → lib/support}/thd_win32.c +1 -1
  345. data/src/core/{support → lib/support}/time.c +2 -2
  346. data/src/core/{support → lib/support}/time_posix.c +12 -6
  347. data/src/core/{support → lib/support}/time_precise.c +0 -0
  348. data/src/core/{support → lib/support}/time_precise.h +3 -3
  349. data/src/core/{support → lib/support}/time_win32.c +7 -7
  350. data/src/core/{support → lib/support}/tls_pthread.c +0 -0
  351. data/src/core/{support → lib/support}/tmpfile.h +4 -4
  352. data/src/core/lib/support/tmpfile_msys.c +73 -0
  353. data/src/core/{support → lib/support}/tmpfile_posix.c +5 -5
  354. data/src/core/{support → lib/support}/tmpfile_win32.c +5 -5
  355. data/src/core/{support → lib/support}/wrap_memcpy.c +0 -0
  356. data/src/core/{surface → lib/surface}/alarm.c +3 -3
  357. data/src/core/{surface → lib/surface}/api_trace.c +1 -1
  358. data/src/core/{surface → lib/surface}/api_trace.h +4 -4
  359. data/src/core/{surface → lib/surface}/byte_buffer.c +3 -3
  360. data/src/core/{surface → lib/surface}/byte_buffer_reader.c +3 -3
  361. data/src/core/{surface → lib/surface}/call.c +145 -73
  362. data/src/core/{surface → lib/surface}/call.h +14 -7
  363. data/src/core/{surface → lib/surface}/call_details.c +1 -1
  364. data/src/core/{surface → lib/surface}/call_log_batch.c +2 -2
  365. data/src/core/{surface → lib/surface}/call_test_only.h +3 -3
  366. data/src/core/{surface → lib/surface}/channel.c +33 -34
  367. data/src/core/{surface → lib/surface}/channel.h +9 -9
  368. data/src/core/lib/surface/channel_init.c +140 -0
  369. data/src/core/lib/surface/channel_init.h +87 -0
  370. data/src/core/{surface → lib/surface}/channel_ping.c +4 -4
  371. data/src/core/lib/surface/channel_stack_type.c +54 -0
  372. data/src/core/{httpcli/parser.h → lib/surface/channel_stack_type.h} +22 -28
  373. data/src/core/{surface → lib/surface}/completion_queue.c +15 -11
  374. data/src/core/{surface → lib/surface}/completion_queue.h +4 -4
  375. data/src/core/{surface → lib/surface}/event_string.c +2 -2
  376. data/src/core/{surface → lib/surface}/event_string.h +3 -3
  377. data/src/core/lib/surface/init.c +217 -0
  378. data/src/core/{surface → lib/surface}/init.h +4 -3
  379. data/src/core/lib/surface/init_secure.c +89 -0
  380. data/src/core/{surface → lib/surface}/lame_client.c +31 -19
  381. data/src/core/{iomgr/pollset_set_windows.h → lib/surface/lame_client.h} +7 -5
  382. data/src/core/{surface → lib/surface}/metadata_array.c +1 -1
  383. data/src/core/{surface → lib/surface}/server.c +208 -183
  384. data/src/core/{surface → lib/surface}/server.h +6 -11
  385. data/src/core/{surface → lib/surface}/surface_trace.h +5 -5
  386. data/src/core/{surface → lib/surface}/validate_metadata.c +1 -1
  387. data/src/core/{surface → lib/surface}/version.c +2 -2
  388. data/src/core/{transport → lib/transport}/byte_stream.c +1 -1
  389. data/src/core/{transport → lib/transport}/byte_stream.h +4 -4
  390. data/src/core/{transport → lib/transport}/connectivity_state.c +2 -2
  391. data/src/core/{transport → lib/transport}/connectivity_state.h +4 -4
  392. data/src/core/{transport → lib/transport}/metadata.c +71 -19
  393. data/src/core/{transport → lib/transport}/metadata.h +11 -4
  394. data/src/core/{transport → lib/transport}/metadata_batch.c +2 -2
  395. data/src/core/{transport → lib/transport}/metadata_batch.h +4 -4
  396. data/src/core/{transport → lib/transport}/static_metadata.c +100 -32
  397. data/src/core/{transport → lib/transport}/static_metadata.h +58 -58
  398. data/src/core/{transport → lib/transport}/transport.c +25 -5
  399. data/src/core/{transport → lib/transport}/transport.h +41 -16
  400. data/src/core/{transport → lib/transport}/transport_impl.h +8 -5
  401. data/src/core/{transport → lib/transport}/transport_op_string.c +2 -2
  402. data/src/core/{tsi → lib/tsi}/fake_transport_security.c +18 -14
  403. data/src/core/{tsi → lib/tsi}/fake_transport_security.h +4 -4
  404. data/src/core/{tsi → lib/tsi}/ssl_transport_security.c +173 -63
  405. data/src/core/{tsi → lib/tsi}/ssl_transport_security.h +24 -6
  406. data/src/core/{tsi → lib/tsi}/ssl_types.h +3 -3
  407. data/src/core/{tsi → lib/tsi}/transport_security.c +12 -28
  408. data/src/core/{tsi → lib/tsi}/transport_security.h +4 -4
  409. data/src/core/{tsi → lib/tsi}/transport_security_interface.h +12 -3
  410. data/src/core/plugin_registry/grpc_plugin_registry.c +66 -0
  411. data/src/ruby/ext/grpc/extconf.rb +14 -20
  412. data/src/ruby/ext/grpc/rb_byte_buffer.c +2 -3
  413. data/src/ruby/ext/grpc/rb_call.c +37 -4
  414. data/src/ruby/ext/grpc/rb_call_credentials.c +13 -3
  415. data/src/ruby/ext/grpc/rb_channel.c +2 -3
  416. data/src/ruby/ext/grpc/rb_channel_args.c +2 -3
  417. data/src/ruby/ext/grpc/rb_channel_credentials.c +31 -3
  418. data/src/ruby/ext/grpc/rb_completion_queue.c +2 -2
  419. data/src/ruby/ext/grpc/rb_event_thread.c +1 -1
  420. data/src/ruby/ext/grpc/rb_grpc.c +4 -2
  421. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +8 -0
  422. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +14 -2
  423. data/src/ruby/ext/grpc/rb_server.c +2 -3
  424. data/src/ruby/ext/grpc/rb_server_credentials.c +16 -13
  425. data/src/ruby/ext/grpc/rb_signal.c +70 -0
  426. data/src/ruby/ext/grpc/rb_signal.h +39 -0
  427. data/src/ruby/lib/grpc.rb +21 -13
  428. data/src/ruby/lib/grpc/core/time_consts.rb +2 -2
  429. data/src/ruby/lib/grpc/errors.rb +2 -2
  430. data/src/ruby/lib/grpc/generic/active_call.rb +10 -3
  431. data/src/ruby/lib/grpc/generic/bidi_call.rb +2 -2
  432. data/src/ruby/lib/grpc/generic/client_stub.rb +10 -7
  433. data/src/ruby/lib/grpc/generic/rpc_desc.rb +2 -2
  434. data/src/ruby/lib/grpc/generic/rpc_server.rb +21 -61
  435. data/src/ruby/lib/grpc/generic/service.rb +5 -15
  436. data/src/ruby/lib/grpc/grpc.rb +3 -3
  437. data/src/ruby/{bin/interop/interop_server.rb → lib/grpc/signals.rb} +39 -20
  438. data/src/ruby/lib/grpc/version.rb +2 -2
  439. data/src/ruby/pb/generate_proto_ruby.sh +9 -2
  440. data/src/ruby/pb/grpc/health/checker.rb +1 -1
  441. data/src/ruby/pb/grpc/testing/duplicate/echo_duplicate_services.rb +28 -0
  442. data/src/ruby/pb/grpc/testing/metrics.rb +28 -0
  443. data/src/ruby/pb/grpc/testing/metrics_services.rb +27 -0
  444. data/src/ruby/pb/test/client.rb +12 -23
  445. data/src/ruby/pb/test/server.rb +1 -1
  446. data/src/ruby/spec/client_server_spec.rb +1 -1
  447. data/src/ruby/spec/generic/client_stub_spec.rb +18 -17
  448. data/src/ruby/spec/generic/rpc_server_spec.rb +23 -7
  449. data/src/ruby/spec/generic/service_spec.rb +0 -69
  450. data/src/ruby/{bin/interop/interop_client.rb → spec/pb/duplicate/codegen_spec.rb} +41 -21
  451. data/src/ruby/spec/pb/health/checker_spec.rb +1 -1
  452. data/third_party/boringssl/crypto/asn1/a_bitstr.c +184 -176
  453. data/third_party/boringssl/crypto/asn1/a_bool.c +42 -44
  454. data/third_party/boringssl/crypto/asn1/a_bytes.c +236 -245
  455. data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +173 -192
  456. data/third_party/boringssl/crypto/asn1/a_dup.c +43 -35
  457. data/third_party/boringssl/crypto/asn1/a_enum.c +107 -109
  458. data/third_party/boringssl/crypto/asn1/a_gentm.c +180 -181
  459. data/third_party/boringssl/crypto/asn1/a_i2d_fp.c +73 -80
  460. data/third_party/boringssl/crypto/asn1/a_int.c +357 -353
  461. data/third_party/boringssl/crypto/asn1/a_mbstr.c +272 -253
  462. data/third_party/boringssl/crypto/asn1/a_object.c +293 -309
  463. data/third_party/boringssl/crypto/asn1/a_octet.c +13 -6
  464. data/third_party/boringssl/crypto/asn1/a_print.c +54 -52
  465. data/third_party/boringssl/crypto/asn1/a_strnid.c +179 -157
  466. data/third_party/boringssl/crypto/asn1/a_time.c +125 -129
  467. data/third_party/boringssl/crypto/asn1/a_type.c +79 -86
  468. data/third_party/boringssl/crypto/asn1/a_utctm.c +246 -255
  469. data/third_party/boringssl/crypto/asn1/a_utf8.c +159 -135
  470. data/third_party/boringssl/crypto/asn1/asn1_lib.c +361 -368
  471. data/third_party/boringssl/crypto/asn1/asn1_locl.h +11 -11
  472. data/third_party/boringssl/crypto/asn1/asn1_par.c +309 -351
  473. data/third_party/boringssl/crypto/asn1/asn_pack.c +30 -29
  474. data/third_party/boringssl/crypto/asn1/bio_asn1.c +375 -394
  475. data/third_party/boringssl/crypto/asn1/bio_ndef.c +146 -149
  476. data/third_party/boringssl/crypto/asn1/f_enum.c +128 -134
  477. data/third_party/boringssl/crypto/asn1/f_int.c +131 -139
  478. data/third_party/boringssl/crypto/asn1/f_string.c +125 -133
  479. data/third_party/boringssl/crypto/asn1/t_bitst.c +30 -29
  480. data/third_party/boringssl/crypto/asn1/t_pkey.c +45 -47
  481. data/third_party/boringssl/crypto/asn1/tasn_dec.c +1099 -1216
  482. data/third_party/boringssl/crypto/asn1/tasn_enc.c +556 -592
  483. data/third_party/boringssl/crypto/asn1/tasn_fre.c +175 -193
  484. data/third_party/boringssl/crypto/asn1/tasn_new.c +271 -288
  485. data/third_party/boringssl/crypto/asn1/tasn_prn.c +462 -508
  486. data/third_party/boringssl/crypto/asn1/tasn_typ.c +28 -21
  487. data/third_party/boringssl/crypto/asn1/x_bignum.c +62 -52
  488. data/third_party/boringssl/crypto/asn1/x_long.c +101 -86
  489. data/third_party/boringssl/crypto/bio/buffer.c +3 -3
  490. data/third_party/boringssl/crypto/bn/asm/x86_64-gcc.c +8 -68
  491. data/third_party/boringssl/crypto/bn/bn.c +1 -1
  492. data/third_party/boringssl/crypto/bn/bn_asn1.c +9 -22
  493. data/third_party/boringssl/crypto/bn/convert.c +9 -4
  494. data/third_party/boringssl/crypto/bn/div.c +0 -20
  495. data/third_party/boringssl/crypto/bn/exponentiation.c +22 -13
  496. data/third_party/boringssl/crypto/bn/generic.c +6 -242
  497. data/third_party/boringssl/crypto/bn/internal.h +9 -70
  498. data/third_party/boringssl/crypto/bn/montgomery.c +1 -2
  499. data/third_party/boringssl/crypto/bn/mul.c +6 -26
  500. data/third_party/boringssl/crypto/bn/rsaz_exp.c +21 -28
  501. data/third_party/boringssl/crypto/bytestring/asn1_compat.c +51 -0
  502. data/third_party/boringssl/crypto/bytestring/ber.c +128 -87
  503. data/third_party/boringssl/crypto/bytestring/cbb.c +37 -3
  504. data/third_party/boringssl/crypto/bytestring/internal.h +39 -10
  505. data/third_party/boringssl/crypto/chacha/chacha_vec.c +18 -13
  506. data/third_party/boringssl/crypto/cipher/e_aes.c +2 -2
  507. data/third_party/boringssl/crypto/cipher/e_chacha20poly1305.c +4 -9
  508. data/third_party/boringssl/crypto/cipher/tls_cbc.c +39 -10
  509. data/third_party/boringssl/crypto/conf/conf.c +9 -0
  510. data/third_party/boringssl/crypto/cpu-intel.c +1 -1
  511. data/third_party/boringssl/crypto/crypto.c +2 -0
  512. data/third_party/boringssl/crypto/curve25519/curve25519.c +125 -120
  513. data/third_party/boringssl/crypto/curve25519/internal.h +45 -0
  514. data/third_party/boringssl/crypto/curve25519/x25519-x86_64.c +225 -0
  515. data/third_party/boringssl/crypto/dh/check.c +32 -10
  516. data/third_party/boringssl/crypto/dh/dh.c +1 -1
  517. data/third_party/boringssl/crypto/digest/md32_common.h +0 -60
  518. data/third_party/boringssl/crypto/dsa/dsa.c +47 -21
  519. data/third_party/boringssl/crypto/dsa/dsa_asn1.c +249 -64
  520. data/third_party/boringssl/crypto/ec/ec.c +45 -31
  521. data/third_party/boringssl/crypto/ec/ec_asn1.c +315 -382
  522. data/third_party/boringssl/crypto/ec/ec_key.c +1 -4
  523. data/third_party/boringssl/crypto/ec/ec_montgomery.c +0 -9
  524. data/third_party/boringssl/crypto/ec/internal.h +1 -19
  525. data/third_party/boringssl/crypto/ec/oct.c +12 -0
  526. data/third_party/boringssl/crypto/ec/p224-64.c +4 -65
  527. data/third_party/boringssl/crypto/ec/p256-64.c +9 -71
  528. data/third_party/boringssl/crypto/ec/p256-x86_64-table.h +1 -6
  529. data/third_party/boringssl/crypto/ec/p256-x86_64.c +3 -13
  530. data/third_party/boringssl/crypto/ec/simple.c +0 -76
  531. data/third_party/boringssl/crypto/ecdsa/ecdsa.c +1 -1
  532. data/third_party/boringssl/crypto/ecdsa/ecdsa_asn1.c +10 -24
  533. data/third_party/boringssl/crypto/evp/evp.c +4 -3
  534. data/third_party/boringssl/crypto/evp/evp_asn1.c +101 -0
  535. data/third_party/boringssl/crypto/evp/evp_ctx.c +22 -51
  536. data/third_party/boringssl/crypto/evp/internal.h +28 -27
  537. data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +78 -249
  538. data/third_party/boringssl/crypto/evp/p_ec.c +19 -66
  539. data/third_party/boringssl/crypto/evp/p_ec_asn1.c +74 -231
  540. data/third_party/boringssl/crypto/evp/p_rsa.c +90 -13
  541. data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +49 -48
  542. data/third_party/boringssl/crypto/internal.h +16 -1
  543. data/third_party/boringssl/crypto/mem.c +2 -2
  544. data/third_party/boringssl/crypto/modes/ctr.c +2 -1
  545. data/third_party/boringssl/crypto/modes/gcm.c +5 -3
  546. data/third_party/boringssl/crypto/obj/obj_dat.h +6 -3
  547. data/third_party/boringssl/crypto/pem/pem_all.c +83 -102
  548. data/third_party/boringssl/crypto/pem/pem_info.c +286 -309
  549. data/third_party/boringssl/crypto/pem/pem_lib.c +690 -710
  550. data/third_party/boringssl/crypto/pem/pem_oth.c +15 -16
  551. data/third_party/boringssl/crypto/pem/pem_pk8.c +132 -119
  552. data/third_party/boringssl/crypto/pem/pem_pkey.c +144 -220
  553. data/third_party/boringssl/crypto/pem/pem_x509.c +3 -3
  554. data/third_party/boringssl/crypto/pem/pem_xaux.c +5 -4
  555. data/third_party/boringssl/crypto/pkcs8/pkcs8.c +54 -60
  556. data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +3 -1
  557. data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +48 -50
  558. data/third_party/boringssl/crypto/rand/rand.c +2 -0
  559. data/third_party/boringssl/crypto/rsa/blinding.c +8 -48
  560. data/third_party/boringssl/crypto/rsa/internal.h +1 -9
  561. data/third_party/boringssl/crypto/rsa/padding.c +73 -77
  562. data/third_party/boringssl/crypto/rsa/rsa.c +1 -1
  563. data/third_party/boringssl/crypto/rsa/rsa_asn1.c +27 -46
  564. data/third_party/boringssl/crypto/rsa/rsa_impl.c +23 -34
  565. data/third_party/boringssl/crypto/test/scoped_types.h +3 -0
  566. data/third_party/boringssl/crypto/thread_win.c +15 -13
  567. data/third_party/boringssl/crypto/time_support.c +0 -6
  568. data/third_party/boringssl/crypto/x509/a_digest.c +26 -27
  569. data/third_party/boringssl/crypto/x509/a_sign.c +63 -64
  570. data/third_party/boringssl/crypto/x509/a_strex.c +482 -413
  571. data/third_party/boringssl/crypto/x509/a_verify.c +45 -51
  572. data/third_party/boringssl/crypto/x509/asn1_gen.c +715 -769
  573. data/third_party/boringssl/crypto/x509/by_dir.c +355 -393
  574. data/third_party/boringssl/crypto/x509/by_file.c +186 -206
  575. data/third_party/boringssl/crypto/x509/charmap.h +11 -11
  576. data/third_party/boringssl/crypto/x509/i2d_pr.c +21 -22
  577. data/third_party/boringssl/crypto/x509/t_crl.c +50 -51
  578. data/third_party/boringssl/crypto/x509/t_x509.c +414 -406
  579. data/third_party/boringssl/crypto/x509/t_x509a.c +44 -42
  580. data/third_party/boringssl/crypto/x509/vpm_int.h +13 -13
  581. data/third_party/boringssl/crypto/x509/x509_att.c +241 -219
  582. data/third_party/boringssl/crypto/x509/x509_cmp.c +343 -359
  583. data/third_party/boringssl/crypto/x509/x509_d2.c +36 -35
  584. data/third_party/boringssl/crypto/x509/x509_def.c +23 -13
  585. data/third_party/boringssl/crypto/x509/x509_ext.c +75 -75
  586. data/third_party/boringssl/crypto/x509/x509_lu.c +574 -612
  587. data/third_party/boringssl/crypto/x509/x509_obj.c +104 -115
  588. data/third_party/boringssl/crypto/x509/x509_r2x.c +40 -40
  589. data/third_party/boringssl/crypto/x509/x509_req.c +181 -174
  590. data/third_party/boringssl/crypto/x509/x509_set.c +71 -76
  591. data/third_party/boringssl/crypto/x509/x509_trs.c +193 -171
  592. data/third_party/boringssl/crypto/x509/x509_txt.c +135 -138
  593. data/third_party/boringssl/crypto/x509/x509_v3.c +174 -167
  594. data/third_party/boringssl/crypto/x509/x509_vfy.c +2079 -2130
  595. data/third_party/boringssl/crypto/x509/x509_vpm.c +486 -522
  596. data/third_party/boringssl/crypto/x509/x509cset.c +96 -99
  597. data/third_party/boringssl/crypto/x509/x509name.c +280 -275
  598. data/third_party/boringssl/crypto/x509/x509rset.c +15 -14
  599. data/third_party/boringssl/crypto/x509/x509spki.c +62 -60
  600. data/third_party/boringssl/crypto/x509/x509type.c +58 -60
  601. data/third_party/boringssl/crypto/x509/x_algor.c +70 -73
  602. data/third_party/boringssl/crypto/x509/x_all.c +282 -328
  603. data/third_party/boringssl/crypto/x509/x_attrib.c +36 -42
  604. data/third_party/boringssl/crypto/x509/x_crl.c +397 -418
  605. data/third_party/boringssl/crypto/x509/x_exten.c +5 -5
  606. data/third_party/boringssl/crypto/x509/x_info.c +30 -27
  607. data/third_party/boringssl/crypto/x509/x_name.c +387 -388
  608. data/third_party/boringssl/crypto/x509/x_pkey.c +32 -29
  609. data/third_party/boringssl/crypto/x509/x_pubkey.c +261 -280
  610. data/third_party/boringssl/crypto/x509/x_req.c +30 -33
  611. data/third_party/boringssl/crypto/x509/x_sig.c +2 -2
  612. data/third_party/boringssl/crypto/x509/x_spki.c +9 -7
  613. data/third_party/boringssl/crypto/x509/x_val.c +2 -2
  614. data/third_party/boringssl/crypto/x509/x_x509.c +120 -119
  615. data/third_party/boringssl/crypto/x509/x_x509a.c +99 -91
  616. data/third_party/boringssl/crypto/x509v3/ext_dat.h +57 -51
  617. data/third_party/boringssl/crypto/x509v3/pcy_cache.c +199 -214
  618. data/third_party/boringssl/crypto/x509v3/pcy_data.c +57 -64
  619. data/third_party/boringssl/crypto/x509v3/pcy_int.h +95 -90
  620. data/third_party/boringssl/crypto/x509v3/pcy_lib.c +86 -87
  621. data/third_party/boringssl/crypto/x509v3/pcy_map.c +61 -64
  622. data/third_party/boringssl/crypto/x509v3/pcy_node.c +108 -117
  623. data/third_party/boringssl/crypto/x509v3/pcy_tree.c +676 -724
  624. data/third_party/boringssl/crypto/x509v3/v3_akey.c +128 -136
  625. data/third_party/boringssl/crypto/x509v3/v3_akeya.c +7 -6
  626. data/third_party/boringssl/crypto/x509v3/v3_alt.c +499 -507
  627. data/third_party/boringssl/crypto/x509v3/v3_bcons.c +54 -47
  628. data/third_party/boringssl/crypto/x509v3/v3_bitst.c +67 -67
  629. data/third_party/boringssl/crypto/x509v3/v3_conf.c +330 -328
  630. data/third_party/boringssl/crypto/x509v3/v3_cpols.c +354 -338
  631. data/third_party/boringssl/crypto/x509v3/v3_crld.c +441 -496
  632. data/third_party/boringssl/crypto/x509v3/v3_enum.c +35 -33
  633. data/third_party/boringssl/crypto/x509v3/v3_extku.c +66 -63
  634. data/third_party/boringssl/crypto/x509v3/v3_genn.c +157 -159
  635. data/third_party/boringssl/crypto/x509v3/v3_ia5.c +45 -43
  636. data/third_party/boringssl/crypto/x509v3/v3_info.c +124 -112
  637. data/third_party/boringssl/crypto/x509v3/v3_int.c +30 -26
  638. data/third_party/boringssl/crypto/x509v3/v3_lib.c +231 -204
  639. data/third_party/boringssl/crypto/x509v3/v3_ncons.c +353 -381
  640. data/third_party/boringssl/crypto/x509v3/v3_pci.c +252 -270
  641. data/third_party/boringssl/crypto/x509v3/v3_pcia.c +9 -8
  642. data/third_party/boringssl/crypto/x509v3/v3_pcons.c +58 -61
  643. data/third_party/boringssl/crypto/x509v3/v3_pku.c +35 -34
  644. data/third_party/boringssl/crypto/x509v3/v3_pmaps.c +72 -74
  645. data/third_party/boringssl/crypto/x509v3/v3_prn.c +146 -121
  646. data/third_party/boringssl/crypto/x509v3/v3_purp.c +651 -582
  647. data/third_party/boringssl/crypto/x509v3/v3_skey.c +76 -72
  648. data/third_party/boringssl/crypto/x509v3/v3_sxnet.c +139 -131
  649. data/third_party/boringssl/crypto/x509v3/v3_utl.c +1072 -1068
  650. data/third_party/boringssl/include/openssl/asn1.h +40 -38
  651. data/third_party/boringssl/include/openssl/base.h +10 -1
  652. data/third_party/boringssl/include/openssl/bio.h +10 -11
  653. data/third_party/boringssl/include/openssl/bn.h +12 -9
  654. data/third_party/boringssl/include/openssl/buf.h +1 -1
  655. data/third_party/boringssl/include/openssl/bytestring.h +29 -0
  656. data/third_party/boringssl/include/openssl/conf.h +25 -0
  657. data/third_party/boringssl/include/openssl/crypto.h +6 -1
  658. data/third_party/boringssl/include/openssl/curve25519.h +6 -3
  659. data/third_party/boringssl/include/openssl/dh.h +7 -3
  660. data/third_party/boringssl/include/openssl/dsa.h +108 -51
  661. data/third_party/boringssl/include/openssl/ec.h +46 -21
  662. data/third_party/boringssl/include/openssl/ec_key.h +78 -42
  663. data/third_party/boringssl/include/openssl/ecdsa.h +4 -4
  664. data/third_party/boringssl/include/openssl/err.h +3 -2
  665. data/third_party/boringssl/include/openssl/evp.h +120 -37
  666. data/third_party/boringssl/include/openssl/mem.h +4 -13
  667. data/third_party/boringssl/include/openssl/obj_mac.h +4 -0
  668. data/third_party/boringssl/include/openssl/pem.h +0 -9
  669. data/third_party/boringssl/include/openssl/pkcs8.h +6 -2
  670. data/third_party/boringssl/include/openssl/rand.h +3 -0
  671. data/third_party/boringssl/include/openssl/rsa.h +42 -42
  672. data/third_party/boringssl/include/openssl/ssl.h +115 -41
  673. data/third_party/boringssl/include/openssl/stack.h +0 -3
  674. data/third_party/boringssl/include/openssl/stack_macros.h +0 -256
  675. data/third_party/boringssl/include/openssl/tls1.h +1 -1
  676. data/third_party/boringssl/include/openssl/x509.h +0 -2
  677. data/third_party/boringssl/include/openssl/x509_vfy.h +5 -0
  678. data/third_party/boringssl/ssl/d1_both.c +102 -101
  679. data/third_party/boringssl/ssl/d1_clnt.c +145 -150
  680. data/third_party/boringssl/ssl/d1_lib.c +63 -62
  681. data/third_party/boringssl/ssl/d1_pkt.c +73 -71
  682. data/third_party/boringssl/ssl/d1_srvr.c +116 -125
  683. data/third_party/boringssl/ssl/dtls_record.c +3 -3
  684. data/third_party/boringssl/ssl/internal.h +210 -208
  685. data/third_party/boringssl/ssl/pqueue/pqueue.c +2 -2
  686. data/third_party/boringssl/ssl/s3_both.c +116 -130
  687. data/third_party/boringssl/ssl/s3_clnt.c +589 -740
  688. data/third_party/boringssl/ssl/s3_enc.c +52 -151
  689. data/third_party/boringssl/ssl/s3_lib.c +70 -76
  690. data/third_party/boringssl/ssl/s3_pkt.c +105 -144
  691. data/third_party/boringssl/ssl/s3_srvr.c +542 -806
  692. data/third_party/boringssl/ssl/ssl_aead_ctx.c +1 -1
  693. data/third_party/boringssl/ssl/ssl_cert.c +2 -2
  694. data/third_party/boringssl/ssl/ssl_cipher.c +7 -3
  695. data/third_party/boringssl/ssl/ssl_ecdh.c +374 -0
  696. data/third_party/boringssl/ssl/ssl_lib.c +260 -221
  697. data/third_party/boringssl/ssl/ssl_session.c +17 -17
  698. data/third_party/boringssl/ssl/t1_enc.c +128 -273
  699. data/third_party/boringssl/ssl/t1_lib.c +134 -258
  700. data/third_party/boringssl/ssl/test/test_config.h +2 -0
  701. data/third_party/boringssl/ssl/tls_record.c +52 -15
  702. metadata +385 -359
  703. data/src/core/channel/client_uchannel.c +0 -243
  704. data/src/core/channel/client_uchannel.h +0 -60
  705. data/src/core/channel/connected_channel.h +0 -51
  706. data/src/core/client_config/lb_policies/pick_first.h +0 -43
  707. data/src/core/client_config/resolvers/dns_resolver.h +0 -42
  708. data/src/core/client_config/subchannel_factory.h +0 -66
  709. data/src/core/httpcli/parser.c +0 -211
  710. data/src/core/iomgr/fd_posix.c +0 -451
  711. data/src/core/iomgr/fd_posix.h +0 -192
  712. data/src/core/iomgr/pollset_multipoller_with_epoll.c +0 -324
  713. data/src/core/iomgr/pollset_multipoller_with_poll_posix.c +0 -234
  714. data/src/core/iomgr/pollset_posix.c +0 -633
  715. data/src/core/iomgr/pollset_posix.h +0 -153
  716. data/src/core/iomgr/pollset_set_posix.c +0 -202
  717. data/src/core/iomgr/pollset_set_posix.h +0 -45
  718. data/src/core/surface/init.c +0 -174
  719. data/src/core/surface/init_secure.c +0 -42
  720. data/src/core/surface/server_create.c +0 -48
  721. data/src/core/transport/chttp2/huffsyms.c +0 -297
  722. data/src/ruby/bin/grpc_ruby_interop_client +0 -33
  723. data/src/ruby/bin/grpc_ruby_interop_server +0 -33
  724. data/third_party/boringssl/crypto/dsa/internal.h +0 -78
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  *
3
- * Copyright 2015-2016, Google Inc.
3
+ * Copyright 2015, Google Inc.
4
4
  * All rights reserved.
5
5
  *
6
6
  * Redistribution and use in source and binary forms, with or without
@@ -33,9 +33,9 @@
33
33
 
34
34
  #include <grpc/support/port_platform.h>
35
35
 
36
- #ifdef GPR_POSIX_FILE
36
+ #ifdef GPR_POSIX_TMPFILE
37
37
 
38
- #include "src/core/support/tmpfile.h"
38
+ #include "src/core/lib/support/tmpfile.h"
39
39
 
40
40
  #include <errno.h>
41
41
  #include <stdlib.h>
@@ -46,7 +46,7 @@
46
46
  #include <grpc/support/log.h>
47
47
  #include <grpc/support/string_util.h>
48
48
 
49
- #include "src/core/support/string.h"
49
+ #include "src/core/lib/support/string.h"
50
50
 
51
51
  FILE *gpr_tmpfile(const char *prefix, char **tmp_filename) {
52
52
  FILE *result = NULL;
@@ -82,4 +82,4 @@ end:
82
82
  return result;
83
83
  }
84
84
 
85
- #endif /* GPR_POSIX_FILE */
85
+ #endif /* GPR_POSIX_TMPFILE */
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  *
3
- * Copyright 2015-2016, Google Inc.
3
+ * Copyright 2015, Google Inc.
4
4
  * All rights reserved.
5
5
  *
6
6
  * Redistribution and use in source and binary forms, with or without
@@ -33,7 +33,7 @@
33
33
 
34
34
  #include <grpc/support/port_platform.h>
35
35
 
36
- #ifdef GPR_WIN32
36
+ #ifdef GPR_WIN32_TMPFILE
37
37
 
38
38
  #include <io.h>
39
39
  #include <stdio.h>
@@ -44,8 +44,8 @@
44
44
  #include <grpc/support/log.h>
45
45
  #include <grpc/support/string_util.h>
46
46
 
47
- #include "src/core/support/string_win32.h"
48
- #include "src/core/support/tmpfile.h"
47
+ #include "src/core/lib/support/string_win32.h"
48
+ #include "src/core/lib/support/tmpfile.h"
49
49
 
50
50
  FILE *gpr_tmpfile(const char *prefix, char **tmp_filename_out) {
51
51
  FILE *result = NULL;
@@ -81,4 +81,4 @@ end:
81
81
  return result;
82
82
  }
83
83
 
84
- #endif /* GPR_WIN32 */
84
+ #endif /* GPR_WIN32_TMPFILE */
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  *
3
- * Copyright 2015-2016, Google Inc.
3
+ * Copyright 2015, Google Inc.
4
4
  * All rights reserved.
5
5
  *
6
6
  * Redistribution and use in source and binary forms, with or without
@@ -31,10 +31,10 @@
31
31
  *
32
32
  */
33
33
 
34
- #include "src/core/iomgr/timer.h"
35
- #include "src/core/surface/completion_queue.h"
36
34
  #include <grpc/grpc.h>
37
35
  #include <grpc/support/alloc.h>
36
+ #include "src/core/lib/iomgr/timer.h"
37
+ #include "src/core/lib/surface/completion_queue.h"
38
38
 
39
39
  struct grpc_alarm {
40
40
  grpc_timer alarm;
@@ -31,6 +31,6 @@
31
31
  *
32
32
  */
33
33
 
34
- #include "src/core/surface/api_trace.h"
34
+ #include "src/core/lib/surface/api_trace.h"
35
35
 
36
36
  int grpc_api_trace = 0;
@@ -31,11 +31,11 @@
31
31
  *
32
32
  */
33
33
 
34
- #ifndef GRPC_INTERNAL_CORE_SURFACE_API_TRACE_H
35
- #define GRPC_INTERNAL_CORE_SURFACE_API_TRACE_H
34
+ #ifndef GRPC_CORE_LIB_SURFACE_API_TRACE_H
35
+ #define GRPC_CORE_LIB_SURFACE_API_TRACE_H
36
36
 
37
- #include "src/core/debug/trace.h"
38
37
  #include <grpc/support/log.h>
38
+ #include "src/core/lib/debug/trace.h"
39
39
 
40
40
  extern int grpc_api_trace;
41
41
 
@@ -62,4 +62,4 @@ extern int grpc_api_trace;
62
62
  gpr_log(GPR_INFO, fmt GRPC_API_TRACE_UNWRAP##nargs args); \
63
63
  }
64
64
 
65
- #endif /* GRPC_INTERNAL_CORE_SURFACE_API_TRACE_H */
65
+ #endif /* GRPC_CORE_LIB_SURFACE_API_TRACE_H */
@@ -44,7 +44,7 @@ grpc_byte_buffer *grpc_raw_byte_buffer_create(gpr_slice *slices,
44
44
  grpc_byte_buffer *grpc_raw_compressed_byte_buffer_create(
45
45
  gpr_slice *slices, size_t nslices, grpc_compression_algorithm compression) {
46
46
  size_t i;
47
- grpc_byte_buffer *bb = malloc(sizeof(grpc_byte_buffer));
47
+ grpc_byte_buffer *bb = gpr_malloc(sizeof(grpc_byte_buffer));
48
48
  bb->type = GRPC_BB_RAW;
49
49
  bb->data.raw.compression = compression;
50
50
  gpr_slice_buffer_init(&bb->data.raw.slice_buffer);
@@ -57,7 +57,7 @@ grpc_byte_buffer *grpc_raw_compressed_byte_buffer_create(
57
57
 
58
58
  grpc_byte_buffer *grpc_raw_byte_buffer_from_reader(
59
59
  grpc_byte_buffer_reader *reader) {
60
- grpc_byte_buffer *bb = malloc(sizeof(grpc_byte_buffer));
60
+ grpc_byte_buffer *bb = gpr_malloc(sizeof(grpc_byte_buffer));
61
61
  gpr_slice slice;
62
62
  bb->type = GRPC_BB_RAW;
63
63
  bb->data.raw.compression = GRPC_COMPRESS_NONE;
@@ -85,7 +85,7 @@ void grpc_byte_buffer_destroy(grpc_byte_buffer *bb) {
85
85
  gpr_slice_buffer_destroy(&bb->data.raw.slice_buffer);
86
86
  break;
87
87
  }
88
- free(bb);
88
+ gpr_free(bb);
89
89
  }
90
90
 
91
91
  size_t grpc_byte_buffer_length(grpc_byte_buffer *bb) {
@@ -31,17 +31,17 @@
31
31
  *
32
32
  */
33
33
 
34
- #include <string.h>
35
34
  #include <grpc/byte_buffer_reader.h>
35
+ #include <string.h>
36
36
 
37
+ #include <grpc/byte_buffer.h>
37
38
  #include <grpc/compression.h>
38
39
  #include <grpc/grpc.h>
39
40
  #include <grpc/support/alloc.h>
40
41
  #include <grpc/support/log.h>
41
42
  #include <grpc/support/slice_buffer.h>
42
- #include <grpc/byte_buffer.h>
43
43
 
44
- #include "src/core/compression/message_compress.h"
44
+ #include "src/core/lib/compression/message_compress.h"
45
45
 
46
46
  static int is_compressed(grpc_byte_buffer *buffer) {
47
47
  switch (buffer->type) {
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  *
3
- * Copyright 2015-2016, Google Inc.
3
+ * Copyright 2015, Google Inc.
4
4
  * All rights reserved.
5
5
  *
6
6
  * Redistribution and use in source and binary forms, with or without
@@ -43,16 +43,16 @@
43
43
  #include <grpc/support/string_util.h>
44
44
  #include <grpc/support/useful.h>
45
45
 
46
- #include "src/core/channel/channel_stack.h"
47
- #include "src/core/compression/algorithm_metadata.h"
48
- #include "src/core/iomgr/timer.h"
49
- #include "src/core/profiling/timers.h"
50
- #include "src/core/support/string.h"
51
- #include "src/core/surface/api_trace.h"
52
- #include "src/core/surface/call.h"
53
- #include "src/core/surface/channel.h"
54
- #include "src/core/surface/completion_queue.h"
55
- #include "src/core/transport/static_metadata.h"
46
+ #include "src/core/lib/channel/channel_stack.h"
47
+ #include "src/core/lib/compression/algorithm_metadata.h"
48
+ #include "src/core/lib/iomgr/timer.h"
49
+ #include "src/core/lib/profiling/timers.h"
50
+ #include "src/core/lib/support/string.h"
51
+ #include "src/core/lib/surface/api_trace.h"
52
+ #include "src/core/lib/surface/call.h"
53
+ #include "src/core/lib/surface/channel.h"
54
+ #include "src/core/lib/surface/completion_queue.h"
55
+ #include "src/core/lib/transport/static_metadata.h"
56
56
 
57
57
  /** The maximum number of concurrent batches possible.
58
58
  Based upon the maximum number of individually queueable ops in the batch
@@ -81,11 +81,11 @@ typedef enum {
81
81
  /* Status came from the application layer overriding whatever
82
82
  the wire says */
83
83
  STATUS_FROM_API_OVERRIDE = 0,
84
- /* Status was created by some internal channel stack operation */
85
- STATUS_FROM_CORE,
86
84
  /* Status came from 'the wire' - or somewhere below the surface
87
85
  layer */
88
86
  STATUS_FROM_WIRE,
87
+ /* Status was created by some internal channel stack operation */
88
+ STATUS_FROM_CORE,
89
89
  /* Status came from the server sending status */
90
90
  STATUS_FROM_SERVER_STATUS,
91
91
  STATUS_SOURCE_COUNT
@@ -142,22 +142,23 @@ struct grpc_call {
142
142
  gpr_mu mu;
143
143
 
144
144
  /* client or server call */
145
- uint8_t is_client;
145
+ bool is_client;
146
146
  /* is the alarm set */
147
- uint8_t have_alarm;
147
+ bool have_alarm;
148
148
  /** has grpc_call_destroy been called */
149
- uint8_t destroy_called;
149
+ bool destroy_called;
150
150
  /** flag indicating that cancellation is inherited */
151
- uint8_t cancellation_is_inherited;
151
+ bool cancellation_is_inherited;
152
152
  /** bitmask of live batches */
153
153
  uint8_t used_batches;
154
154
  /** which ops are in-flight */
155
- uint8_t sent_initial_metadata;
156
- uint8_t sending_message;
157
- uint8_t sent_final_op;
158
- uint8_t received_initial_metadata;
159
- uint8_t receiving_message;
160
- uint8_t received_final_op;
155
+ bool sent_initial_metadata;
156
+ bool sending_message;
157
+ bool sent_final_op;
158
+ bool received_initial_metadata;
159
+ bool receiving_message;
160
+ bool requested_final_op;
161
+ bool received_final_op;
161
162
 
162
163
  /* have we received initial metadata */
163
164
  bool has_initial_md_been_received;
@@ -174,6 +175,9 @@ struct grpc_call {
174
175
  /* Received call statuses from various sources */
175
176
  received_status status[STATUS_SOURCE_COUNT];
176
177
 
178
+ /* Call stats: only valid after trailing metadata received */
179
+ grpc_transport_stream_stats stats;
180
+
177
181
  /* Compression algorithm for the call */
178
182
  grpc_compression_algorithm compression_algorithm;
179
183
  /* Supported encodings (compression algorithms), a bitset */
@@ -217,10 +221,7 @@ struct grpc_call {
217
221
  } server;
218
222
  } final_op;
219
223
 
220
- struct {
221
- void *bctlp;
222
- bool success;
223
- } saved_receiving_stream_ready_ctx;
224
+ void *saved_receiving_stream_ready_bctlp;
224
225
  };
225
226
 
226
227
  #define CALL_STACK_FROM_CALL(call) ((grpc_call_stack *)((call) + 1))
@@ -372,8 +373,6 @@ static void destroy_call(grpc_exec_ctx *exec_ctx, void *call, bool success) {
372
373
  if (c->receiving_stream != NULL) {
373
374
  grpc_byte_stream_destroy(exec_ctx, c->receiving_stream);
374
375
  }
375
- grpc_call_stack_destroy(exec_ctx, CALL_STACK_FROM_CALL(c));
376
- GRPC_CHANNEL_INTERNAL_UNREF(exec_ctx, c->channel, "call");
377
376
  gpr_mu_destroy(&c->mu);
378
377
  for (i = 0; i < STATUS_SOURCE_COUNT; i++) {
379
378
  if (c->status[i].details) {
@@ -391,7 +390,9 @@ static void destroy_call(grpc_exec_ctx *exec_ctx, void *call, bool success) {
391
390
  if (c->cq) {
392
391
  GRPC_CQ_INTERNAL_UNREF(c->cq, "bind");
393
392
  }
394
- gpr_free(c);
393
+ grpc_channel *channel = c->channel;
394
+ grpc_call_stack_destroy(exec_ctx, CALL_STACK_FROM_CALL(c), c);
395
+ GRPC_CHANNEL_INTERNAL_UNREF(exec_ctx, channel, "call");
395
396
  GPR_TIMER_END("destroy_call", 0);
396
397
  }
397
398
 
@@ -551,21 +552,6 @@ static int prepare_application_metadata(grpc_call *call, int count,
551
552
  int i;
552
553
  grpc_metadata_batch *batch =
553
554
  &call->metadata_batch[0 /* is_receiving */][is_trailing];
554
- if (prepend_extra_metadata) {
555
- if (call->send_extra_metadata_count == 0) {
556
- prepend_extra_metadata = 0;
557
- } else {
558
- for (i = 0; i < call->send_extra_metadata_count; i++) {
559
- GRPC_MDELEM_REF(call->send_extra_metadata[i].md);
560
- }
561
- for (i = 1; i < call->send_extra_metadata_count; i++) {
562
- call->send_extra_metadata[i].prev = &call->send_extra_metadata[i - 1];
563
- }
564
- for (i = 0; i < call->send_extra_metadata_count - 1; i++) {
565
- call->send_extra_metadata[i].next = &call->send_extra_metadata[i + 1];
566
- }
567
- }
568
- }
569
555
  for (i = 0; i < count; i++) {
570
556
  grpc_metadata *md = &metadata[i];
571
557
  grpc_linked_mdelem *l = (grpc_linked_mdelem *)&md->internal_data;
@@ -576,14 +562,37 @@ static int prepare_application_metadata(grpc_call *call, int count,
576
562
  GRPC_MDSTR_LENGTH(l->md->key))) {
577
563
  gpr_log(GPR_ERROR, "attempt to send invalid metadata key: %s",
578
564
  grpc_mdstr_as_c_string(l->md->key));
579
- return 0;
565
+ break;
580
566
  } else if (!grpc_is_binary_header(grpc_mdstr_as_c_string(l->md->key),
581
567
  GRPC_MDSTR_LENGTH(l->md->key)) &&
582
568
  !grpc_header_nonbin_value_is_legal(
583
569
  grpc_mdstr_as_c_string(l->md->value),
584
570
  GRPC_MDSTR_LENGTH(l->md->value))) {
585
571
  gpr_log(GPR_ERROR, "attempt to send invalid metadata value");
586
- return 0;
572
+ break;
573
+ }
574
+ }
575
+ if (i != count) {
576
+ for (int j = 0; j <= i; j++) {
577
+ grpc_metadata *md = &metadata[j];
578
+ grpc_linked_mdelem *l = (grpc_linked_mdelem *)&md->internal_data;
579
+ GRPC_MDELEM_UNREF(l->md);
580
+ }
581
+ return 0;
582
+ }
583
+ if (prepend_extra_metadata) {
584
+ if (call->send_extra_metadata_count == 0) {
585
+ prepend_extra_metadata = 0;
586
+ } else {
587
+ for (i = 0; i < call->send_extra_metadata_count; i++) {
588
+ GRPC_MDELEM_REF(call->send_extra_metadata[i].md);
589
+ }
590
+ for (i = 1; i < call->send_extra_metadata_count; i++) {
591
+ call->send_extra_metadata[i].prev = &call->send_extra_metadata[i - 1];
592
+ }
593
+ for (i = 0; i < call->send_extra_metadata_count - 1; i++) {
594
+ call->send_extra_metadata[i].next = &call->send_extra_metadata[i + 1];
595
+ }
587
596
  }
588
597
  }
589
598
  for (i = 1; i < count; i++) {
@@ -909,7 +918,7 @@ static void set_cancelled_value(grpc_status_code status, void *dest) {
909
918
  *(int *)dest = (status != GRPC_STATUS_OK);
910
919
  }
911
920
 
912
- static int are_write_flags_valid(uint32_t flags) {
921
+ static bool are_write_flags_valid(uint32_t flags) {
913
922
  /* check that only bits in GRPC_WRITE_(INTERNAL?)_USED_MASK are set */
914
923
  const uint32_t allowed_write_positions =
915
924
  (GRPC_WRITE_USED_MASK | GRPC_WRITE_INTERNAL_USED_MASK);
@@ -917,6 +926,15 @@ static int are_write_flags_valid(uint32_t flags) {
917
926
  return !(flags & invalid_positions);
918
927
  }
919
928
 
929
+ static bool are_initial_metadata_flags_valid(uint32_t flags, bool is_client) {
930
+ /* check that only bits in GRPC_WRITE_(INTERNAL?)_USED_MASK are set */
931
+ uint32_t invalid_positions = ~GRPC_INITIAL_METADATA_USED_MASK;
932
+ if (!is_client) {
933
+ invalid_positions |= GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST;
934
+ }
935
+ return !(flags & invalid_positions);
936
+ }
937
+
920
938
  static batch_control *allocate_batch_control(grpc_call *call) {
921
939
  size_t i;
922
940
  for (i = 0; i < MAX_CONCURRENT_BATCHES; i++) {
@@ -1045,12 +1063,12 @@ static void receiving_stream_ready(grpc_exec_ctx *exec_ctx, void *bctlp,
1045
1063
  grpc_call *call = bctl->call;
1046
1064
 
1047
1065
  gpr_mu_lock(&bctl->call->mu);
1048
- if (bctl->call->has_initial_md_been_received) {
1066
+ if (bctl->call->has_initial_md_been_received || !success ||
1067
+ call->receiving_stream == NULL) {
1049
1068
  gpr_mu_unlock(&bctl->call->mu);
1050
1069
  process_data_after_md(exec_ctx, bctlp, success);
1051
1070
  } else {
1052
- call->saved_receiving_stream_ready_ctx.bctlp = bctlp;
1053
- call->saved_receiving_stream_ready_ctx.success = success;
1071
+ call->saved_receiving_stream_ready_bctlp = bctlp;
1054
1072
  gpr_mu_unlock(&bctl->call->mu);
1055
1073
  }
1056
1074
  }
@@ -1062,25 +1080,28 @@ static void receiving_initial_metadata_ready(grpc_exec_ctx *exec_ctx,
1062
1080
 
1063
1081
  gpr_mu_lock(&call->mu);
1064
1082
 
1065
- grpc_metadata_batch *md =
1066
- &call->metadata_batch[1 /* is_receiving */][0 /* is_trailing */];
1067
- grpc_metadata_batch_filter(md, recv_initial_filter, call);
1068
- call->has_initial_md_been_received = true;
1069
-
1070
- if (gpr_time_cmp(md->deadline, gpr_inf_future(md->deadline.clock_type)) !=
1071
- 0 &&
1072
- !call->is_client) {
1073
- GPR_TIMER_BEGIN("set_deadline_alarm", 0);
1074
- set_deadline_alarm(exec_ctx, call, md->deadline);
1075
- GPR_TIMER_END("set_deadline_alarm", 0);
1083
+ if (!success) {
1084
+ bctl->success = false;
1085
+ } else {
1086
+ grpc_metadata_batch *md =
1087
+ &call->metadata_batch[1 /* is_receiving */][0 /* is_trailing */];
1088
+ grpc_metadata_batch_filter(md, recv_initial_filter, call);
1089
+
1090
+ if (gpr_time_cmp(md->deadline, gpr_inf_future(md->deadline.clock_type)) !=
1091
+ 0 &&
1092
+ !call->is_client) {
1093
+ GPR_TIMER_BEGIN("set_deadline_alarm", 0);
1094
+ set_deadline_alarm(exec_ctx, call, md->deadline);
1095
+ GPR_TIMER_END("set_deadline_alarm", 0);
1096
+ }
1076
1097
  }
1077
1098
 
1078
- if (call->saved_receiving_stream_ready_ctx.bctlp != NULL) {
1099
+ call->has_initial_md_been_received = true;
1100
+ if (call->saved_receiving_stream_ready_bctlp != NULL) {
1079
1101
  grpc_closure *saved_rsr_closure = grpc_closure_create(
1080
- receiving_stream_ready, call->saved_receiving_stream_ready_ctx.bctlp);
1081
- grpc_exec_ctx_enqueue(exec_ctx, saved_rsr_closure,
1082
- call->saved_receiving_stream_ready_ctx.success, NULL);
1083
- call->saved_receiving_stream_ready_ctx.bctlp = NULL;
1102
+ receiving_stream_ready, call->saved_receiving_stream_ready_bctlp);
1103
+ call->saved_receiving_stream_ready_bctlp = NULL;
1104
+ grpc_exec_ctx_enqueue(exec_ctx, saved_rsr_closure, success, NULL);
1084
1105
  }
1085
1106
 
1086
1107
  gpr_mu_unlock(&call->mu);
@@ -1098,6 +1119,9 @@ static void finish_batch(grpc_exec_ctx *exec_ctx, void *bctlp, bool success) {
1098
1119
 
1099
1120
  gpr_mu_lock(&call->mu);
1100
1121
  if (bctl->send_initial_metadata) {
1122
+ if (!success) {
1123
+ set_status_code(call, STATUS_FROM_CORE, GRPC_STATUS_UNAVAILABLE);
1124
+ }
1101
1125
  grpc_metadata_batch_destroy(
1102
1126
  &call->metadata_batch[0 /* is_receiving */][0 /* is_trailing */]);
1103
1127
  }
@@ -1113,6 +1137,7 @@ static void finish_batch(grpc_exec_ctx *exec_ctx, void *bctlp, bool success) {
1113
1137
  &call->metadata_batch[1 /* is_receiving */][1 /* is_trailing */];
1114
1138
  grpc_metadata_batch_filter(md, recv_trailing_filter, call);
1115
1139
 
1140
+ call->received_final_op = true;
1116
1141
  if (call->have_alarm) {
1117
1142
  grpc_timer_cancel(exec_ctx, &call->alarm);
1118
1143
  }
@@ -1196,7 +1221,7 @@ static grpc_call_error call_start_batch(grpc_exec_ctx *exec_ctx,
1196
1221
  switch (op->op) {
1197
1222
  case GRPC_OP_SEND_INITIAL_METADATA:
1198
1223
  /* Flag validation: currently allow no flags */
1199
- if (op->flags != 0) {
1224
+ if (!are_initial_metadata_flags_valid(op->flags, call->is_client)) {
1200
1225
  error = GRPC_CALL_ERROR_INVALID_FLAGS;
1201
1226
  goto done_with_error;
1202
1227
  }
@@ -1220,6 +1245,7 @@ static grpc_call_error call_start_batch(grpc_exec_ctx *exec_ctx,
1220
1245
  call->metadata_batch[0][0].deadline = call->send_deadline;
1221
1246
  stream_op.send_initial_metadata =
1222
1247
  &call->metadata_batch[0 /* is_receiving */][0 /* is_trailing */];
1248
+ stream_op.send_initial_metadata_flags = op->flags;
1223
1249
  break;
1224
1250
  case GRPC_OP_SEND_MESSAGE:
1225
1251
  if (!are_write_flags_valid(op->flags)) {
@@ -1356,11 +1382,11 @@ static grpc_call_error call_start_batch(grpc_exec_ctx *exec_ctx,
1356
1382
  error = GRPC_CALL_ERROR_NOT_ON_SERVER;
1357
1383
  goto done_with_error;
1358
1384
  }
1359
- if (call->received_final_op) {
1385
+ if (call->requested_final_op) {
1360
1386
  error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
1361
1387
  goto done_with_error;
1362
1388
  }
1363
- call->received_final_op = 1;
1389
+ call->requested_final_op = 1;
1364
1390
  call->buffered_metadata[1] =
1365
1391
  op->data.recv_status_on_client.trailing_metadata;
1366
1392
  call->final_op.client.status = op->data.recv_status_on_client.status;
@@ -1371,6 +1397,7 @@ static grpc_call_error call_start_batch(grpc_exec_ctx *exec_ctx,
1371
1397
  bctl->recv_final_op = 1;
1372
1398
  stream_op.recv_trailing_metadata =
1373
1399
  &call->metadata_batch[1 /* is_receiving */][1 /* is_trailing */];
1400
+ stream_op.collect_stats = &call->stats;
1374
1401
  break;
1375
1402
  case GRPC_OP_RECV_CLOSE_ON_SERVER:
1376
1403
  /* Flag validation: currently allow no flags */
@@ -1382,16 +1409,17 @@ static grpc_call_error call_start_batch(grpc_exec_ctx *exec_ctx,
1382
1409
  error = GRPC_CALL_ERROR_NOT_ON_CLIENT;
1383
1410
  goto done_with_error;
1384
1411
  }
1385
- if (call->received_final_op) {
1412
+ if (call->requested_final_op) {
1386
1413
  error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
1387
1414
  goto done_with_error;
1388
1415
  }
1389
- call->received_final_op = 1;
1416
+ call->requested_final_op = 1;
1390
1417
  call->final_op.server.cancelled =
1391
1418
  op->data.recv_close_on_server.cancelled;
1392
1419
  bctl->recv_final_op = 1;
1393
1420
  stream_op.recv_trailing_metadata =
1394
1421
  &call->metadata_batch[1 /* is_receiving */][1 /* is_trailing */];
1422
+ stream_op.collect_stats = &call->stats;
1395
1423
  break;
1396
1424
  }
1397
1425
  }
@@ -1434,7 +1462,7 @@ done_with_error:
1434
1462
  call->receiving_message = 0;
1435
1463
  }
1436
1464
  if (bctl->recv_final_op) {
1437
- call->received_final_op = 0;
1465
+ call->requested_final_op = 0;
1438
1466
  }
1439
1467
  gpr_mu_unlock(&call->mu);
1440
1468
  goto done;
@@ -1481,3 +1509,47 @@ void *grpc_call_context_get(grpc_call *call, grpc_context_index elem) {
1481
1509
  }
1482
1510
 
1483
1511
  uint8_t grpc_call_is_client(grpc_call *call) { return call->is_client; }
1512
+
1513
+ grpc_compression_algorithm grpc_call_compression_for_level(
1514
+ grpc_call *call, grpc_compression_level level) {
1515
+ gpr_mu_lock(&call->mu);
1516
+ const uint32_t accepted_encodings = call->encodings_accepted_by_peer;
1517
+ gpr_mu_unlock(&call->mu);
1518
+ return grpc_compression_algorithm_for_level(level, accepted_encodings);
1519
+ }
1520
+
1521
+ const char *grpc_call_error_to_string(grpc_call_error error) {
1522
+ switch (error) {
1523
+ case GRPC_CALL_ERROR:
1524
+ return "GRPC_CALL_ERROR";
1525
+ case GRPC_CALL_ERROR_ALREADY_ACCEPTED:
1526
+ return "GRPC_CALL_ERROR_ALREADY_ACCEPTED";
1527
+ case GRPC_CALL_ERROR_ALREADY_FINISHED:
1528
+ return "GRPC_CALL_ERROR_ALREADY_FINISHED";
1529
+ case GRPC_CALL_ERROR_ALREADY_INVOKED:
1530
+ return "GRPC_CALL_ERROR_ALREADY_INVOKED";
1531
+ case GRPC_CALL_ERROR_BATCH_TOO_BIG:
1532
+ return "GRPC_CALL_ERROR_BATCH_TOO_BIG";
1533
+ case GRPC_CALL_ERROR_INVALID_FLAGS:
1534
+ return "GRPC_CALL_ERROR_INVALID_FLAGS";
1535
+ case GRPC_CALL_ERROR_INVALID_MESSAGE:
1536
+ return "GRPC_CALL_ERROR_INVALID_MESSAGE";
1537
+ case GRPC_CALL_ERROR_INVALID_METADATA:
1538
+ return "GRPC_CALL_ERROR_INVALID_METADATA";
1539
+ case GRPC_CALL_ERROR_NOT_INVOKED:
1540
+ return "GRPC_CALL_ERROR_NOT_INVOKED";
1541
+ case GRPC_CALL_ERROR_NOT_ON_CLIENT:
1542
+ return "GRPC_CALL_ERROR_NOT_ON_CLIENT";
1543
+ case GRPC_CALL_ERROR_NOT_ON_SERVER:
1544
+ return "GRPC_CALL_ERROR_NOT_ON_SERVER";
1545
+ case GRPC_CALL_ERROR_NOT_SERVER_COMPLETION_QUEUE:
1546
+ return "GRPC_CALL_ERROR_NOT_SERVER_COMPLETION_QUEUE";
1547
+ case GRPC_CALL_ERROR_PAYLOAD_TYPE_MISMATCH:
1548
+ return "GRPC_CALL_ERROR_PAYLOAD_TYPE_MISMATCH";
1549
+ case GRPC_CALL_ERROR_TOO_MANY_OPERATIONS:
1550
+ return "GRPC_CALL_ERROR_TOO_MANY_OPERATIONS";
1551
+ case GRPC_CALL_OK:
1552
+ return "GRPC_CALL_OK";
1553
+ }
1554
+ GPR_UNREACHABLE_CODE(return "GRPC_CALL_ERROR_UNKNOW");
1555
+ }