awesome-grpc-that-works 0.12.2 → 0.14.0.dev

Sign up to get free protection for your applications and to get access to all the features.
Files changed (724) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +1 -0
  3. data/Makefile +5783 -22121
  4. data/include/grpc/byte_buffer.h +2 -83
  5. data/include/grpc/census.h +173 -121
  6. data/include/grpc/compression.h +14 -38
  7. data/include/grpc/grpc.h +85 -434
  8. data/include/grpc/grpc_security.h +76 -46
  9. data/include/grpc/grpc_zookeeper.h +1 -1
  10. data/include/grpc/impl/codegen/alloc.h +74 -0
  11. data/include/grpc/impl/codegen/atm.h +92 -0
  12. data/include/grpc/impl/codegen/atm_gcc_atomic.h +72 -0
  13. data/include/grpc/impl/codegen/atm_gcc_sync.h +87 -0
  14. data/include/grpc/impl/codegen/atm_win32.h +125 -0
  15. data/include/grpc/impl/codegen/byte_buffer.h +121 -0
  16. data/include/grpc/impl/codegen/compression_types.h +73 -0
  17. data/include/grpc/impl/codegen/connectivity_state.h +59 -0
  18. data/include/grpc/impl/codegen/grpc_types.h +378 -0
  19. data/include/grpc/impl/codegen/log.h +110 -0
  20. data/include/grpc/impl/codegen/port_platform.h +370 -0
  21. data/include/grpc/impl/codegen/propagation_bits.h +67 -0
  22. data/include/grpc/impl/codegen/slice.h +182 -0
  23. data/include/grpc/impl/codegen/slice_buffer.h +105 -0
  24. data/include/grpc/impl/codegen/status.h +163 -0
  25. data/include/grpc/impl/codegen/sync.h +316 -0
  26. data/include/grpc/impl/codegen/sync_generic.h +55 -0
  27. data/{src/core/census/context.h → include/grpc/impl/codegen/sync_posix.h} +11 -11
  28. data/include/grpc/impl/codegen/sync_win32.h +49 -0
  29. data/include/grpc/impl/codegen/time.h +130 -0
  30. data/include/grpc/status.h +2 -126
  31. data/include/grpc/support/alloc.h +2 -35
  32. data/include/grpc/support/atm.h +2 -55
  33. data/include/grpc/support/atm_gcc_atomic.h +5 -38
  34. data/include/grpc/support/atm_gcc_sync.h +2 -50
  35. data/include/grpc/support/atm_win32.h +2 -88
  36. data/include/grpc/support/avl.h +10 -9
  37. data/include/grpc/support/cmdline.h +15 -13
  38. data/include/grpc/support/cpu.h +5 -3
  39. data/include/grpc/support/histogram.h +23 -20
  40. data/include/grpc/support/host_port.h +5 -3
  41. data/include/grpc/support/log.h +2 -71
  42. data/include/grpc/support/log_win32.h +2 -2
  43. data/include/grpc/support/port_platform.h +2 -319
  44. data/include/grpc/support/slice.h +2 -145
  45. data/include/grpc/support/slice_buffer.h +2 -65
  46. data/include/grpc/support/string_util.h +3 -3
  47. data/include/grpc/support/subprocess.h +8 -6
  48. data/include/grpc/support/sync.h +2 -278
  49. data/include/grpc/support/sync_generic.h +2 -18
  50. data/include/grpc/support/sync_posix.h +2 -10
  51. data/include/grpc/support/sync_win32.h +2 -12
  52. data/include/grpc/support/thd.h +11 -11
  53. data/include/grpc/support/time.h +2 -91
  54. data/include/grpc/support/tls.h +1 -1
  55. data/include/grpc/support/tls_gcc.h +1 -1
  56. data/include/grpc/support/tls_msvc.h +1 -1
  57. data/include/grpc/support/tls_pthread.h +2 -2
  58. data/include/grpc/support/useful.h +3 -1
  59. data/src/boringssl/err_data.c +1252 -0
  60. data/src/core/census/context.c +471 -8
  61. data/src/core/census/grpc_filter.c +5 -5
  62. data/src/core/census/initialize.c +4 -7
  63. data/src/core/census/mlog.c +600 -0
  64. data/src/core/census/mlog.h +95 -0
  65. data/src/core/census/operation.c +2 -2
  66. data/src/core/census/placeholders.c +109 -0
  67. data/src/core/census/rpc_metric_id.h +6 -6
  68. data/src/core/census/tracing.c +1 -1
  69. data/src/core/channel/channel_args.c +71 -9
  70. data/src/core/channel/channel_args.h +7 -1
  71. data/src/core/channel/channel_stack.c +1 -1
  72. data/src/core/channel/client_channel.c +33 -30
  73. data/src/core/channel/client_uchannel.c +3 -3
  74. data/src/core/channel/compress_filter.c +8 -8
  75. data/src/core/channel/http_client_filter.c +4 -4
  76. data/src/core/channel/http_server_filter.c +11 -11
  77. data/src/core/channel/subchannel_call_holder.c +11 -11
  78. data/src/core/client_config/connector.c +3 -2
  79. data/src/core/client_config/connector.h +2 -2
  80. data/src/core/client_config/lb_policies/load_balancer_api.c +163 -0
  81. data/src/core/client_config/lb_policies/load_balancer_api.h +85 -0
  82. data/src/core/client_config/lb_policies/pick_first.c +57 -40
  83. data/src/core/client_config/lb_policies/round_robin.c +14 -15
  84. data/src/core/client_config/lb_policy.c +3 -3
  85. data/src/core/client_config/lb_policy.h +3 -2
  86. data/src/core/client_config/resolvers/dns_resolver.c +3 -3
  87. data/src/core/client_config/resolvers/sockaddr_resolver.c +5 -5
  88. data/src/core/client_config/subchannel.c +84 -39
  89. data/src/core/client_config/subchannel.h +15 -6
  90. data/src/core/client_config/subchannel_index.c +261 -0
  91. data/src/core/client_config/subchannel_index.h +77 -0
  92. data/src/core/compression/{algorithm.c → compression_algorithm.c} +3 -3
  93. data/src/core/httpcli/format_request.c +1 -1
  94. data/src/core/httpcli/httpcli.c +18 -16
  95. data/src/core/httpcli/httpcli.h +3 -2
  96. data/src/core/httpcli/httpcli_security_connector.c +9 -10
  97. data/src/core/httpcli/parser.c +7 -7
  98. data/src/core/httpcli/parser.h +1 -1
  99. data/src/core/iomgr/closure.c +7 -7
  100. data/src/core/iomgr/closure.h +6 -5
  101. data/src/core/iomgr/exec_ctx.c +12 -8
  102. data/src/core/iomgr/exec_ctx.h +12 -5
  103. data/src/core/iomgr/executor.c +4 -4
  104. data/src/core/iomgr/executor.h +2 -2
  105. data/src/core/iomgr/fd_posix.c +32 -19
  106. data/src/core/iomgr/fd_posix.h +7 -4
  107. data/src/core/iomgr/iocp_windows.c +7 -9
  108. data/src/core/iomgr/iomgr.c +2 -2
  109. data/src/core/iomgr/pollset.h +9 -10
  110. data/src/core/iomgr/pollset_multipoller_with_epoll.c +71 -5
  111. data/src/core/iomgr/pollset_multipoller_with_poll_posix.c +9 -5
  112. data/src/core/iomgr/pollset_posix.c +44 -49
  113. data/src/core/iomgr/pollset_posix.h +14 -8
  114. data/src/core/iomgr/pollset_set.h +3 -9
  115. data/src/core/iomgr/pollset_set_posix.c +23 -3
  116. data/src/core/iomgr/pollset_set_posix.h +2 -18
  117. data/src/core/iomgr/pollset_set_windows.c +3 -3
  118. data/src/core/iomgr/pollset_set_windows.h +2 -2
  119. data/src/core/iomgr/pollset_windows.c +29 -37
  120. data/src/core/iomgr/pollset_windows.h +1 -5
  121. data/src/core/iomgr/resolve_address_posix.c +2 -2
  122. data/src/core/iomgr/resolve_address_windows.c +2 -2
  123. data/src/core/iomgr/sockaddr_utils.c +6 -6
  124. data/src/core/iomgr/sockaddr_win32.h +1 -6
  125. data/src/core/iomgr/tcp_client_posix.c +14 -12
  126. data/src/core/iomgr/tcp_client_windows.c +4 -4
  127. data/src/core/iomgr/tcp_posix.c +18 -10
  128. data/src/core/iomgr/tcp_posix.h +7 -1
  129. data/src/core/iomgr/tcp_server.h +40 -20
  130. data/src/core/iomgr/tcp_server_posix.c +106 -49
  131. data/src/core/iomgr/tcp_server_windows.c +98 -49
  132. data/src/core/iomgr/tcp_windows.c +11 -15
  133. data/src/core/iomgr/timer.c +10 -11
  134. data/src/core/iomgr/timer.h +22 -2
  135. data/src/core/iomgr/timer_heap.c +10 -10
  136. data/src/core/iomgr/timer_heap.h +2 -2
  137. data/src/core/iomgr/udp_server.c +7 -16
  138. data/src/core/iomgr/udp_server.h +2 -9
  139. data/src/core/iomgr/workqueue.h +2 -4
  140. data/src/core/iomgr/workqueue_posix.c +4 -3
  141. data/src/core/iomgr/workqueue_posix.h +3 -1
  142. data/src/core/json/json_reader.c +11 -12
  143. data/src/core/json/json_reader.h +4 -4
  144. data/src/core/json/json_string.c +19 -19
  145. data/src/core/json/json_writer.c +7 -9
  146. data/src/core/profiling/basic_timers.c +1 -1
  147. data/src/core/proto/grpc/lb/v0/load_balancer.pb.c +119 -0
  148. data/src/core/proto/grpc/lb/v0/load_balancer.pb.h +182 -0
  149. data/src/core/security/{base64.c → b64.c} +10 -10
  150. data/src/core/security/{base64.h → b64.h} +1 -1
  151. data/src/core/security/client_auth_filter.c +4 -5
  152. data/src/core/security/credentials.c +17 -10
  153. data/src/core/security/credentials.h +3 -3
  154. data/src/core/security/google_default_credentials.c +27 -22
  155. data/src/core/security/handshake.c +21 -12
  156. data/src/core/security/handshake.h +2 -1
  157. data/src/core/security/json_token.c +14 -8
  158. data/src/core/security/jwt_verifier.c +4 -3
  159. data/src/core/security/secure_endpoint.c +16 -16
  160. data/src/core/security/security_connector.c +131 -81
  161. data/src/core/security/security_connector.h +47 -27
  162. data/src/core/security/security_context.c +8 -3
  163. data/src/core/security/server_auth_filter.c +5 -5
  164. data/src/core/security/server_secure_chttp2.c +36 -37
  165. data/src/core/statistics/census_interface.h +2 -2
  166. data/src/core/statistics/census_rpc_stats.h +3 -3
  167. data/src/core/support/alloc.c +1 -1
  168. data/src/core/support/avl.c +2 -2
  169. data/src/core/support/cpu_posix.c +2 -2
  170. data/src/core/support/env_linux.c +28 -1
  171. data/src/core/support/env_win32.c +15 -7
  172. data/src/core/support/histogram.c +5 -5
  173. data/src/core/support/{file.c → load_file.c} +2 -2
  174. data/src/core/support/{file.h → load_file.h} +4 -12
  175. data/src/core/support/log_posix.c +1 -1
  176. data/src/core/support/log_win32.c +4 -3
  177. data/src/core/support/murmur_hash.c +11 -11
  178. data/src/core/support/murmur_hash.h +1 -1
  179. data/src/core/support/slice.c +11 -11
  180. data/src/core/support/slice_buffer.c +6 -6
  181. data/src/core/support/stack_lockfree.c +20 -10
  182. data/src/core/support/string.c +15 -15
  183. data/src/core/support/string.h +5 -5
  184. data/src/core/support/string_win32.c +5 -5
  185. data/src/core/support/subprocess_windows.c +141 -0
  186. data/src/core/support/sync.c +4 -4
  187. data/src/core/support/sync_posix.c +2 -2
  188. data/src/core/support/sync_win32.c +10 -5
  189. data/src/core/support/time.c +29 -29
  190. data/src/core/support/time_posix.c +15 -6
  191. data/src/core/support/time_precise.c +2 -2
  192. data/src/core/support/time_win32.c +18 -9
  193. data/src/core/support/tls_pthread.c +1 -1
  194. data/src/core/support/tmpfile.h +55 -0
  195. data/src/core/support/{file_posix.c → tmpfile_posix.c} +2 -2
  196. data/src/core/support/{file_win32.c → tmpfile_win32.c} +2 -2
  197. data/src/core/support/wrap_memcpy.c +53 -0
  198. data/src/core/surface/alarm.c +84 -0
  199. data/src/core/surface/byte_buffer_reader.c +1 -1
  200. data/src/core/surface/call.c +175 -116
  201. data/src/core/surface/call.h +2 -2
  202. data/src/core/surface/call_test_only.h +2 -2
  203. data/src/core/surface/channel.c +9 -9
  204. data/src/core/surface/channel.h +1 -1
  205. data/src/core/surface/channel_connectivity.c +3 -3
  206. data/src/core/surface/channel_create.c +4 -4
  207. data/src/core/surface/channel_ping.c +2 -2
  208. data/src/core/surface/completion_queue.c +84 -53
  209. data/src/core/surface/completion_queue.h +1 -1
  210. data/src/core/surface/init.c +11 -5
  211. data/src/core/surface/lame_client.c +2 -3
  212. data/src/core/surface/secure_channel_create.c +9 -10
  213. data/src/core/surface/server.c +30 -30
  214. data/src/core/surface/server_chttp2.c +8 -8
  215. data/src/core/surface/server_create.c +1 -4
  216. data/src/core/surface/validate_metadata.c +4 -4
  217. data/src/core/surface/version.c +2 -2
  218. data/src/core/transport/byte_stream.c +8 -6
  219. data/src/core/transport/byte_stream.h +6 -5
  220. data/src/core/transport/chttp2/bin_encoder.c +29 -29
  221. data/src/core/transport/chttp2/frame_data.c +29 -26
  222. data/src/core/transport/chttp2/frame_data.h +6 -6
  223. data/src/core/transport/chttp2/frame_goaway.c +30 -30
  224. data/src/core/transport/chttp2/frame_goaway.h +6 -6
  225. data/src/core/transport/chttp2/frame_ping.c +6 -6
  226. data/src/core/transport/chttp2/frame_ping.h +5 -5
  227. data/src/core/transport/chttp2/frame_rst_stream.c +18 -19
  228. data/src/core/transport/chttp2/frame_rst_stream.h +4 -4
  229. data/src/core/transport/chttp2/frame_settings.c +30 -30
  230. data/src/core/transport/chttp2/frame_settings.h +13 -13
  231. data/src/core/transport/chttp2/frame_window_update.c +17 -18
  232. data/src/core/transport/chttp2/frame_window_update.h +5 -7
  233. data/src/core/transport/chttp2/hpack_encoder.c +69 -73
  234. data/src/core/transport/chttp2/hpack_encoder.h +16 -16
  235. data/src/core/transport/chttp2/hpack_parser.c +167 -167
  236. data/src/core/transport/chttp2/hpack_parser.h +16 -16
  237. data/src/core/transport/chttp2/hpack_table.c +13 -13
  238. data/src/core/transport/chttp2/hpack_table.h +11 -11
  239. data/src/core/transport/chttp2/internal.h +103 -87
  240. data/src/core/transport/chttp2/parsing.c +25 -25
  241. data/src/core/transport/chttp2/stream_lists.c +38 -1
  242. data/src/core/transport/chttp2/stream_map.c +13 -14
  243. data/src/core/transport/chttp2/stream_map.h +6 -7
  244. data/src/core/transport/chttp2/timeout_encoding.c +19 -16
  245. data/src/core/transport/chttp2/varint.c +8 -9
  246. data/src/core/transport/chttp2/varint.h +7 -8
  247. data/src/core/transport/chttp2/writing.c +25 -22
  248. data/src/core/transport/chttp2_transport.c +147 -100
  249. data/src/core/transport/connectivity_state.c +6 -6
  250. data/src/core/transport/metadata.c +18 -18
  251. data/src/core/transport/metadata.h +5 -5
  252. data/src/core/transport/static_metadata.c +32 -33
  253. data/src/core/transport/static_metadata.h +8 -8
  254. data/src/core/transport/transport.c +6 -5
  255. data/src/core/transport/transport.h +17 -1
  256. data/src/core/tsi/fake_transport_security.c +7 -7
  257. data/src/core/tsi/ssl_transport_security.c +6 -4
  258. data/src/core/{iomgr/timer_internal.h → tsi/ssl_types.h} +19 -25
  259. data/src/ruby/ext/grpc/extconf.rb +52 -14
  260. data/src/ruby/ext/grpc/rb_byte_buffer.c +3 -1
  261. data/src/ruby/ext/grpc/rb_call.c +7 -3
  262. data/src/ruby/ext/grpc/rb_call_credentials.c +4 -0
  263. data/src/ruby/ext/grpc/rb_channel.c +4 -2
  264. data/src/ruby/ext/grpc/rb_channel_args.c +3 -1
  265. data/src/ruby/ext/grpc/rb_channel_credentials.c +3 -1
  266. data/src/ruby/ext/grpc/rb_completion_queue.c +3 -1
  267. data/src/ruby/ext/grpc/rb_event_thread.c +5 -0
  268. data/src/ruby/ext/grpc/rb_grpc.c +28 -19
  269. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +562 -0
  270. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +846 -0
  271. data/src/ruby/ext/grpc/rb_loader.c +72 -0
  272. data/src/ruby/ext/grpc/rb_loader.h +40 -0
  273. data/src/ruby/ext/grpc/rb_server.c +3 -1
  274. data/src/ruby/ext/grpc/rb_server_credentials.c +4 -2
  275. data/src/ruby/lib/grpc/core/time_consts.rb +2 -2
  276. data/src/ruby/lib/grpc/errors.rb +2 -2
  277. data/src/ruby/lib/grpc/generic/bidi_call.rb +1 -1
  278. data/src/ruby/lib/grpc/generic/rpc_desc.rb +1 -1
  279. data/src/ruby/lib/grpc/generic/rpc_server.rb +1 -1
  280. data/src/ruby/lib/grpc/grpc.rb +34 -0
  281. data/src/ruby/lib/grpc/version.rb +1 -1
  282. data/src/ruby/pb/README.md +2 -2
  283. data/src/ruby/pb/generate_proto_ruby.sh +2 -2
  284. data/src/ruby/pb/grpc/health/checker.rb +11 -11
  285. data/src/ruby/pb/grpc/health/v1/health.rb +28 -0
  286. data/src/ruby/pb/grpc/health/{v1alpha → v1}/health_services.rb +4 -4
  287. data/src/ruby/spec/client_server_spec.rb +2 -1
  288. data/src/ruby/spec/pb/health/checker_spec.rb +23 -37
  289. data/third_party/boringssl/crypto/aes/aes.c +1142 -0
  290. data/third_party/boringssl/crypto/aes/internal.h +87 -0
  291. data/third_party/boringssl/crypto/aes/mode_wrappers.c +108 -0
  292. data/third_party/boringssl/crypto/asn1/a_bitstr.c +255 -0
  293. data/third_party/boringssl/crypto/asn1/a_bool.c +112 -0
  294. data/third_party/boringssl/crypto/asn1/a_bytes.c +317 -0
  295. data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +286 -0
  296. data/third_party/boringssl/crypto/asn1/a_dup.c +103 -0
  297. data/third_party/boringssl/crypto/asn1/a_enum.c +183 -0
  298. data/third_party/boringssl/crypto/asn1/a_gentm.c +255 -0
  299. data/third_party/boringssl/crypto/asn1/a_i2d_fp.c +154 -0
  300. data/third_party/boringssl/crypto/asn1/a_int.c +456 -0
  301. data/third_party/boringssl/crypto/asn1/a_mbstr.c +390 -0
  302. data/third_party/boringssl/crypto/asn1/a_object.c +412 -0
  303. data/third_party/boringssl/crypto/asn1/a_octet.c +70 -0
  304. data/third_party/boringssl/crypto/asn1/a_print.c +119 -0
  305. data/third_party/boringssl/crypto/asn1/a_strnid.c +286 -0
  306. data/third_party/boringssl/crypto/asn1/a_time.c +221 -0
  307. data/third_party/boringssl/crypto/asn1/a_type.c +160 -0
  308. data/third_party/boringssl/crypto/asn1/a_utctm.c +342 -0
  309. data/third_party/boringssl/crypto/asn1/a_utf8.c +210 -0
  310. data/third_party/boringssl/crypto/asn1/asn1_lib.c +510 -0
  311. data/third_party/boringssl/crypto/asn1/asn1_locl.h +73 -0
  312. data/third_party/boringssl/crypto/asn1/asn1_par.c +444 -0
  313. data/third_party/boringssl/crypto/asn1/asn_pack.c +104 -0
  314. data/third_party/boringssl/crypto/asn1/bio_asn1.c +496 -0
  315. data/third_party/boringssl/crypto/asn1/bio_ndef.c +254 -0
  316. data/third_party/boringssl/crypto/asn1/f_enum.c +206 -0
  317. data/third_party/boringssl/crypto/asn1/f_int.c +210 -0
  318. data/third_party/boringssl/crypto/asn1/f_string.c +204 -0
  319. data/third_party/boringssl/crypto/asn1/t_bitst.c +102 -0
  320. data/third_party/boringssl/crypto/asn1/t_pkey.c +112 -0
  321. data/third_party/boringssl/crypto/asn1/tasn_dec.c +1342 -0
  322. data/third_party/boringssl/crypto/asn1/tasn_enc.c +695 -0
  323. data/third_party/boringssl/crypto/asn1/tasn_fre.c +264 -0
  324. data/third_party/boringssl/crypto/asn1/tasn_new.c +398 -0
  325. data/third_party/boringssl/crypto/asn1/tasn_prn.c +642 -0
  326. data/third_party/boringssl/crypto/asn1/tasn_typ.c +137 -0
  327. data/third_party/boringssl/crypto/asn1/tasn_utl.c +266 -0
  328. data/third_party/boringssl/crypto/asn1/x_bignum.c +143 -0
  329. data/third_party/boringssl/crypto/asn1/x_long.c +182 -0
  330. data/third_party/boringssl/crypto/base64/base64.c +478 -0
  331. data/third_party/boringssl/crypto/bio/bio.c +608 -0
  332. data/third_party/boringssl/crypto/bio/bio_mem.c +327 -0
  333. data/third_party/boringssl/crypto/bio/buffer.c +496 -0
  334. data/third_party/boringssl/crypto/bio/connect.c +544 -0
  335. data/third_party/boringssl/crypto/bio/fd.c +270 -0
  336. data/third_party/boringssl/crypto/bio/file.c +349 -0
  337. data/third_party/boringssl/crypto/bio/hexdump.c +192 -0
  338. data/third_party/boringssl/crypto/bio/internal.h +108 -0
  339. data/third_party/boringssl/crypto/bio/pair.c +803 -0
  340. data/third_party/boringssl/crypto/bio/printf.c +119 -0
  341. data/third_party/boringssl/crypto/bio/socket.c +195 -0
  342. data/third_party/boringssl/crypto/bio/socket_helper.c +113 -0
  343. data/third_party/boringssl/crypto/bn/add.c +377 -0
  344. data/third_party/boringssl/crypto/bn/asm/x86_64-gcc.c +599 -0
  345. data/third_party/boringssl/crypto/bn/bn.c +341 -0
  346. data/third_party/boringssl/crypto/bn/bn_asn1.c +93 -0
  347. data/third_party/boringssl/crypto/bn/cmp.c +200 -0
  348. data/third_party/boringssl/crypto/bn/convert.c +597 -0
  349. data/third_party/boringssl/crypto/bn/ctx.c +311 -0
  350. data/third_party/boringssl/crypto/bn/div.c +625 -0
  351. data/third_party/boringssl/crypto/bn/exponentiation.c +1544 -0
  352. data/third_party/boringssl/crypto/bn/gcd.c +711 -0
  353. data/third_party/boringssl/crypto/bn/generic.c +1019 -0
  354. data/third_party/boringssl/crypto/bn/internal.h +294 -0
  355. data/third_party/boringssl/crypto/bn/kronecker.c +175 -0
  356. data/third_party/boringssl/crypto/bn/montgomery.c +561 -0
  357. data/third_party/boringssl/crypto/bn/mul.c +888 -0
  358. data/third_party/boringssl/crypto/bn/prime.c +845 -0
  359. data/third_party/boringssl/crypto/bn/random.c +326 -0
  360. data/third_party/boringssl/crypto/bn/rsaz_exp.c +326 -0
  361. data/third_party/boringssl/crypto/bn/rsaz_exp.h +56 -0
  362. data/third_party/boringssl/crypto/bn/shift.c +299 -0
  363. data/third_party/boringssl/crypto/bn/sqrt.c +505 -0
  364. data/third_party/boringssl/crypto/buf/buf.c +235 -0
  365. data/third_party/boringssl/crypto/bytestring/ber.c +221 -0
  366. data/third_party/boringssl/crypto/bytestring/cbb.c +411 -0
  367. data/third_party/boringssl/crypto/bytestring/cbs.c +415 -0
  368. data/third_party/boringssl/crypto/bytestring/internal.h +46 -0
  369. data/third_party/boringssl/crypto/chacha/chacha_generic.c +140 -0
  370. data/third_party/boringssl/crypto/chacha/chacha_vec.c +323 -0
  371. data/third_party/boringssl/crypto/cipher/aead.c +167 -0
  372. data/third_party/boringssl/crypto/cipher/cipher.c +652 -0
  373. data/third_party/boringssl/crypto/cipher/derive_key.c +154 -0
  374. data/third_party/boringssl/crypto/cipher/e_aes.c +1767 -0
  375. data/third_party/boringssl/crypto/cipher/e_chacha20poly1305.c +311 -0
  376. data/third_party/boringssl/crypto/cipher/e_des.c +207 -0
  377. data/third_party/boringssl/crypto/cipher/e_null.c +85 -0
  378. data/third_party/boringssl/crypto/cipher/e_rc2.c +443 -0
  379. data/third_party/boringssl/crypto/cipher/e_rc4.c +87 -0
  380. data/third_party/boringssl/crypto/cipher/e_ssl3.c +463 -0
  381. data/third_party/boringssl/crypto/cipher/e_tls.c +673 -0
  382. data/third_party/boringssl/crypto/cipher/internal.h +164 -0
  383. data/third_party/boringssl/crypto/cipher/tls_cbc.c +495 -0
  384. data/third_party/boringssl/crypto/cmac/cmac.c +239 -0
  385. data/third_party/boringssl/crypto/conf/conf.c +778 -0
  386. data/third_party/boringssl/crypto/conf/conf_def.h +127 -0
  387. data/third_party/boringssl/crypto/conf/internal.h +31 -0
  388. data/third_party/boringssl/crypto/cpu-arm.c +199 -0
  389. data/third_party/boringssl/crypto/cpu-intel.c +261 -0
  390. data/third_party/boringssl/crypto/crypto.c +140 -0
  391. data/third_party/boringssl/crypto/curve25519/curve25519.c +4897 -0
  392. data/third_party/boringssl/crypto/des/des.c +771 -0
  393. data/third_party/boringssl/crypto/des/internal.h +212 -0
  394. data/third_party/boringssl/crypto/dh/check.c +180 -0
  395. data/third_party/boringssl/crypto/dh/dh.c +463 -0
  396. data/third_party/boringssl/crypto/dh/dh_asn1.c +84 -0
  397. data/third_party/boringssl/crypto/dh/internal.h +80 -0
  398. data/third_party/boringssl/crypto/dh/params.c +301 -0
  399. data/third_party/boringssl/crypto/digest/digest.c +248 -0
  400. data/third_party/boringssl/crypto/digest/digests.c +321 -0
  401. data/third_party/boringssl/crypto/digest/internal.h +112 -0
  402. data/third_party/boringssl/crypto/digest/md32_common.h +322 -0
  403. data/third_party/boringssl/crypto/directory.h +66 -0
  404. data/third_party/boringssl/crypto/directory_posix.c +108 -0
  405. data/third_party/boringssl/crypto/directory_win.c +144 -0
  406. data/third_party/boringssl/crypto/dsa/dsa.c +908 -0
  407. data/third_party/boringssl/crypto/dsa/dsa_asn1.c +150 -0
  408. data/third_party/boringssl/crypto/dsa/internal.h +78 -0
  409. data/third_party/boringssl/crypto/ec/ec.c +889 -0
  410. data/third_party/boringssl/crypto/ec/ec_asn1.c +586 -0
  411. data/third_party/boringssl/crypto/ec/ec_key.c +482 -0
  412. data/third_party/boringssl/crypto/ec/ec_montgomery.c +280 -0
  413. data/third_party/boringssl/crypto/ec/internal.h +318 -0
  414. data/third_party/boringssl/crypto/ec/oct.c +416 -0
  415. data/third_party/boringssl/crypto/ec/p224-64.c +1305 -0
  416. data/third_party/boringssl/crypto/ec/p256-64.c +1878 -0
  417. data/third_party/boringssl/crypto/ec/p256-x86_64-table.h +9548 -0
  418. data/third_party/boringssl/crypto/ec/p256-x86_64.c +596 -0
  419. data/third_party/boringssl/crypto/ec/simple.c +1313 -0
  420. data/third_party/boringssl/crypto/ec/util-64.c +183 -0
  421. data/third_party/boringssl/crypto/ec/wnaf.c +449 -0
  422. data/third_party/boringssl/crypto/ecdh/ecdh.c +153 -0
  423. data/third_party/boringssl/crypto/ecdsa/ecdsa.c +496 -0
  424. data/third_party/boringssl/crypto/ecdsa/ecdsa_asn1.c +240 -0
  425. data/third_party/boringssl/crypto/engine/engine.c +96 -0
  426. data/third_party/boringssl/crypto/err/err.c +756 -0
  427. data/third_party/boringssl/crypto/evp/algorithm.c +153 -0
  428. data/third_party/boringssl/crypto/evp/digestsign.c +159 -0
  429. data/third_party/boringssl/crypto/evp/evp.c +411 -0
  430. data/third_party/boringssl/crypto/evp/evp_asn1.c +179 -0
  431. data/third_party/boringssl/crypto/evp/evp_ctx.c +477 -0
  432. data/third_party/boringssl/crypto/evp/internal.h +278 -0
  433. data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +588 -0
  434. data/third_party/boringssl/crypto/evp/p_ec.c +283 -0
  435. data/third_party/boringssl/crypto/evp/p_ec_asn1.c +562 -0
  436. data/third_party/boringssl/crypto/evp/p_rsa.c +596 -0
  437. data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +737 -0
  438. data/third_party/boringssl/crypto/evp/pbkdf.c +151 -0
  439. data/third_party/boringssl/crypto/evp/sign.c +151 -0
  440. data/third_party/boringssl/crypto/ex_data.c +294 -0
  441. data/third_party/boringssl/crypto/hkdf/hkdf.c +89 -0
  442. data/third_party/boringssl/crypto/hmac/hmac.c +213 -0
  443. data/third_party/boringssl/crypto/internal.h +532 -0
  444. data/third_party/boringssl/crypto/lhash/lhash.c +346 -0
  445. data/third_party/boringssl/crypto/md4/md4.c +225 -0
  446. data/third_party/boringssl/crypto/md5/md5.c +275 -0
  447. data/third_party/boringssl/crypto/mem.c +200 -0
  448. data/third_party/boringssl/crypto/modes/cbc.c +216 -0
  449. data/third_party/boringssl/crypto/modes/cfb.c +231 -0
  450. data/third_party/boringssl/crypto/modes/ctr.c +226 -0
  451. data/third_party/boringssl/crypto/modes/gcm.c +1252 -0
  452. data/third_party/boringssl/crypto/modes/internal.h +370 -0
  453. data/third_party/boringssl/crypto/modes/ofb.c +108 -0
  454. data/third_party/boringssl/crypto/obj/obj.c +664 -0
  455. data/third_party/boringssl/crypto/obj/obj_dat.h +5257 -0
  456. data/third_party/boringssl/crypto/obj/obj_xref.c +124 -0
  457. data/third_party/boringssl/crypto/obj/obj_xref.h +96 -0
  458. data/third_party/boringssl/crypto/pem/pem_all.c +281 -0
  459. data/third_party/boringssl/crypto/pem/pem_info.c +404 -0
  460. data/third_party/boringssl/crypto/pem/pem_lib.c +835 -0
  461. data/third_party/boringssl/crypto/pem/pem_oth.c +89 -0
  462. data/third_party/boringssl/crypto/pem/pem_pk8.c +244 -0
  463. data/third_party/boringssl/crypto/pem/pem_pkey.c +312 -0
  464. data/third_party/boringssl/crypto/pem/pem_x509.c +65 -0
  465. data/third_party/boringssl/crypto/pem/pem_xaux.c +66 -0
  466. data/third_party/boringssl/crypto/pkcs8/internal.h +83 -0
  467. data/third_party/boringssl/crypto/pkcs8/p5_pbe.c +150 -0
  468. data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +440 -0
  469. data/third_party/boringssl/crypto/pkcs8/p8_pkey.c +85 -0
  470. data/third_party/boringssl/crypto/pkcs8/pkcs8.c +1217 -0
  471. data/third_party/boringssl/crypto/poly1305/poly1305.c +331 -0
  472. data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +301 -0
  473. data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +892 -0
  474. data/third_party/boringssl/crypto/rand/internal.h +32 -0
  475. data/third_party/boringssl/crypto/rand/rand.c +239 -0
  476. data/third_party/boringssl/crypto/rand/urandom.c +223 -0
  477. data/third_party/boringssl/crypto/rand/windows.c +56 -0
  478. data/third_party/boringssl/crypto/rc4/rc4.c +283 -0
  479. data/third_party/boringssl/crypto/refcount_c11.c +67 -0
  480. data/third_party/boringssl/crypto/refcount_lock.c +53 -0
  481. data/third_party/boringssl/crypto/rsa/blinding.c +462 -0
  482. data/third_party/boringssl/crypto/rsa/internal.h +164 -0
  483. data/third_party/boringssl/crypto/rsa/padding.c +711 -0
  484. data/third_party/boringssl/crypto/rsa/rsa.c +808 -0
  485. data/third_party/boringssl/crypto/rsa/rsa_asn1.c +473 -0
  486. data/third_party/boringssl/crypto/rsa/rsa_impl.c +1138 -0
  487. data/third_party/boringssl/crypto/sha/sha1.c +337 -0
  488. data/third_party/boringssl/crypto/sha/sha256.c +327 -0
  489. data/third_party/boringssl/crypto/sha/sha512.c +607 -0
  490. data/third_party/boringssl/crypto/stack/stack.c +386 -0
  491. data/third_party/boringssl/crypto/test/scoped_types.h +137 -0
  492. data/third_party/boringssl/crypto/test/test_util.h +35 -0
  493. data/third_party/boringssl/crypto/thread.c +101 -0
  494. data/third_party/boringssl/crypto/thread_none.c +55 -0
  495. data/third_party/boringssl/crypto/thread_pthread.c +167 -0
  496. data/third_party/boringssl/crypto/thread_win.c +282 -0
  497. data/third_party/boringssl/crypto/time_support.c +212 -0
  498. data/third_party/boringssl/crypto/x509/a_digest.c +97 -0
  499. data/third_party/boringssl/crypto/x509/a_sign.c +136 -0
  500. data/third_party/boringssl/crypto/x509/a_strex.c +564 -0
  501. data/third_party/boringssl/crypto/x509/a_verify.c +133 -0
  502. data/third_party/boringssl/crypto/x509/asn1_gen.c +873 -0
  503. data/third_party/boringssl/crypto/x509/by_dir.c +491 -0
  504. data/third_party/boringssl/crypto/x509/by_file.c +295 -0
  505. data/third_party/boringssl/crypto/x509/charmap.h +15 -0
  506. data/third_party/boringssl/crypto/x509/i2d_pr.c +84 -0
  507. data/third_party/boringssl/crypto/x509/pkcs7.c +353 -0
  508. data/third_party/boringssl/crypto/x509/t_crl.c +129 -0
  509. data/third_party/boringssl/crypto/x509/t_req.c +246 -0
  510. data/third_party/boringssl/crypto/x509/t_x509.c +500 -0
  511. data/third_party/boringssl/crypto/x509/t_x509a.c +109 -0
  512. data/third_party/boringssl/crypto/x509/vpm_int.h +70 -0
  513. data/third_party/boringssl/crypto/x509/x509.c +152 -0
  514. data/third_party/boringssl/crypto/x509/x509_att.c +353 -0
  515. data/third_party/boringssl/crypto/x509/x509_cmp.c +490 -0
  516. data/third_party/boringssl/crypto/x509/x509_d2.c +105 -0
  517. data/third_party/boringssl/crypto/x509/x509_def.c +88 -0
  518. data/third_party/boringssl/crypto/x509/x509_ext.c +206 -0
  519. data/third_party/boringssl/crypto/x509/x509_lu.c +738 -0
  520. data/third_party/boringssl/crypto/x509/x509_obj.c +191 -0
  521. data/third_party/boringssl/crypto/x509/x509_r2x.c +113 -0
  522. data/third_party/boringssl/crypto/x509/x509_req.c +315 -0
  523. data/third_party/boringssl/crypto/x509/x509_set.c +154 -0
  524. data/third_party/boringssl/crypto/x509/x509_trs.c +304 -0
  525. data/third_party/boringssl/crypto/x509/x509_txt.c +209 -0
  526. data/third_party/boringssl/crypto/x509/x509_v3.c +271 -0
  527. data/third_party/boringssl/crypto/x509/x509_vfy.c +2456 -0
  528. data/third_party/boringssl/crypto/x509/x509_vpm.c +672 -0
  529. data/third_party/boringssl/crypto/x509/x509cset.c +172 -0
  530. data/third_party/boringssl/crypto/x509/x509name.c +381 -0
  531. data/third_party/boringssl/crypto/x509/x509rset.c +80 -0
  532. data/third_party/boringssl/crypto/x509/x509spki.c +135 -0
  533. data/third_party/boringssl/crypto/x509/x509type.c +128 -0
  534. data/third_party/boringssl/crypto/x509/x_algor.c +154 -0
  535. data/third_party/boringssl/crypto/x509/x_all.c +547 -0
  536. data/third_party/boringssl/crypto/x509/x_attrib.c +117 -0
  537. data/third_party/boringssl/crypto/x509/x_crl.c +560 -0
  538. data/third_party/boringssl/crypto/x509/x_exten.c +75 -0
  539. data/third_party/boringssl/crypto/x509/x_info.c +95 -0
  540. data/third_party/boringssl/crypto/x509/x_name.c +538 -0
  541. data/third_party/boringssl/crypto/x509/x_pkey.c +100 -0
  542. data/third_party/boringssl/crypto/x509/x_pubkey.c +384 -0
  543. data/third_party/boringssl/crypto/x509/x_req.c +112 -0
  544. data/third_party/boringssl/crypto/x509/x_sig.c +69 -0
  545. data/third_party/boringssl/crypto/x509/x_spki.c +78 -0
  546. data/third_party/boringssl/crypto/x509/x_val.c +69 -0
  547. data/third_party/boringssl/crypto/x509/x_x509.c +227 -0
  548. data/third_party/boringssl/crypto/x509/x_x509a.c +197 -0
  549. data/third_party/boringssl/crypto/x509v3/ext_dat.h +129 -0
  550. data/third_party/boringssl/crypto/x509v3/pcy_cache.c +299 -0
  551. data/third_party/boringssl/crypto/x509v3/pcy_data.c +137 -0
  552. data/third_party/boringssl/crypto/x509v3/pcy_int.h +212 -0
  553. data/third_party/boringssl/crypto/x509v3/pcy_lib.c +165 -0
  554. data/third_party/boringssl/crypto/x509v3/pcy_map.c +133 -0
  555. data/third_party/boringssl/crypto/x509v3/pcy_node.c +197 -0
  556. data/third_party/boringssl/crypto/x509v3/pcy_tree.c +876 -0
  557. data/third_party/boringssl/crypto/x509v3/v3_akey.c +212 -0
  558. data/third_party/boringssl/crypto/x509v3/v3_akeya.c +71 -0
  559. data/third_party/boringssl/crypto/x509v3/v3_alt.c +622 -0
  560. data/third_party/boringssl/crypto/x509v3/v3_bcons.c +126 -0
  561. data/third_party/boringssl/crypto/x509v3/v3_bitst.c +141 -0
  562. data/third_party/boringssl/crypto/x509v3/v3_conf.c +459 -0
  563. data/third_party/boringssl/crypto/x509v3/v3_cpols.c +475 -0
  564. data/third_party/boringssl/crypto/x509v3/v3_crld.c +616 -0
  565. data/third_party/boringssl/crypto/x509v3/v3_enum.c +98 -0
  566. data/third_party/boringssl/crypto/x509v3/v3_extku.c +145 -0
  567. data/third_party/boringssl/crypto/x509v3/v3_genn.c +252 -0
  568. data/third_party/boringssl/crypto/x509v3/v3_ia5.c +117 -0
  569. data/third_party/boringssl/crypto/x509v3/v3_info.c +200 -0
  570. data/third_party/boringssl/crypto/x509v3/v3_int.c +87 -0
  571. data/third_party/boringssl/crypto/x509v3/v3_lib.c +335 -0
  572. data/third_party/boringssl/crypto/x509v3/v3_ncons.c +510 -0
  573. data/third_party/boringssl/crypto/x509v3/v3_pci.c +335 -0
  574. data/third_party/boringssl/crypto/x509v3/v3_pcia.c +56 -0
  575. data/third_party/boringssl/crypto/x509v3/v3_pcons.c +142 -0
  576. data/third_party/boringssl/crypto/x509v3/v3_pku.c +109 -0
  577. data/third_party/boringssl/crypto/x509v3/v3_pmaps.c +156 -0
  578. data/third_party/boringssl/crypto/x509v3/v3_prn.c +207 -0
  579. data/third_party/boringssl/crypto/x509v3/v3_purp.c +805 -0
  580. data/third_party/boringssl/crypto/x509v3/v3_skey.c +148 -0
  581. data/third_party/boringssl/crypto/x509v3/v3_sxnet.c +266 -0
  582. data/third_party/boringssl/crypto/x509v3/v3_utl.c +1322 -0
  583. data/third_party/boringssl/include/openssl/aead.h +346 -0
  584. data/third_party/boringssl/include/openssl/aes.h +158 -0
  585. data/third_party/boringssl/include/openssl/arm_arch.h +127 -0
  586. data/third_party/boringssl/include/openssl/asn1.h +1168 -0
  587. data/third_party/boringssl/include/openssl/asn1_mac.h +75 -0
  588. data/third_party/boringssl/include/openssl/asn1t.h +906 -0
  589. data/third_party/boringssl/include/openssl/base.h +261 -0
  590. data/third_party/boringssl/include/openssl/base64.h +184 -0
  591. data/third_party/boringssl/include/openssl/bio.h +902 -0
  592. data/third_party/boringssl/include/openssl/blowfish.h +93 -0
  593. data/third_party/boringssl/include/openssl/bn.h +885 -0
  594. data/third_party/boringssl/include/openssl/buf.h +118 -0
  595. data/third_party/boringssl/include/openssl/buffer.h +18 -0
  596. data/third_party/boringssl/include/openssl/bytestring.h +360 -0
  597. data/third_party/boringssl/include/openssl/cast.h +96 -0
  598. data/third_party/boringssl/include/openssl/chacha.h +37 -0
  599. data/third_party/boringssl/include/openssl/cipher.h +571 -0
  600. data/third_party/boringssl/include/openssl/cmac.h +76 -0
  601. data/third_party/boringssl/include/openssl/conf.h +145 -0
  602. data/third_party/boringssl/include/openssl/cpu.h +184 -0
  603. data/third_party/boringssl/include/openssl/crypto.h +68 -0
  604. data/third_party/boringssl/include/openssl/curve25519.h +88 -0
  605. data/third_party/boringssl/include/openssl/des.h +177 -0
  606. data/third_party/boringssl/include/openssl/dh.h +238 -0
  607. data/third_party/boringssl/include/openssl/digest.h +258 -0
  608. data/third_party/boringssl/include/openssl/dsa.h +343 -0
  609. data/third_party/boringssl/include/openssl/dtls1.h +16 -0
  610. data/third_party/boringssl/include/openssl/ec.h +355 -0
  611. data/third_party/boringssl/include/openssl/ec_key.h +280 -0
  612. data/third_party/boringssl/include/openssl/ecdh.h +102 -0
  613. data/third_party/boringssl/include/openssl/ecdsa.h +206 -0
  614. data/third_party/boringssl/include/openssl/engine.h +98 -0
  615. data/third_party/boringssl/include/openssl/err.h +487 -0
  616. data/third_party/boringssl/include/openssl/evp.h +750 -0
  617. data/third_party/boringssl/include/openssl/ex_data.h +213 -0
  618. data/third_party/boringssl/include/openssl/hkdf.h +44 -0
  619. data/third_party/boringssl/include/openssl/hmac.h +160 -0
  620. data/third_party/boringssl/include/openssl/lhash.h +192 -0
  621. data/third_party/boringssl/include/openssl/lhash_macros.h +132 -0
  622. data/third_party/boringssl/include/openssl/md4.h +102 -0
  623. data/third_party/boringssl/include/openssl/md5.h +107 -0
  624. data/third_party/boringssl/include/openssl/mem.h +140 -0
  625. data/third_party/boringssl/include/openssl/obj.h +198 -0
  626. data/third_party/boringssl/include/openssl/obj_mac.h +4140 -0
  627. data/third_party/boringssl/include/openssl/objects.h +18 -0
  628. data/third_party/boringssl/include/openssl/opensslfeatures.h +60 -0
  629. data/third_party/boringssl/include/openssl/opensslv.h +18 -0
  630. data/third_party/boringssl/include/openssl/ossl_typ.h +18 -0
  631. data/third_party/boringssl/include/openssl/pem.h +521 -0
  632. data/third_party/boringssl/include/openssl/pkcs12.h +18 -0
  633. data/third_party/boringssl/include/openssl/pkcs7.h +16 -0
  634. data/third_party/boringssl/include/openssl/pkcs8.h +220 -0
  635. data/third_party/boringssl/include/openssl/poly1305.h +51 -0
  636. data/third_party/boringssl/include/openssl/pqueue.h +146 -0
  637. data/third_party/boringssl/include/openssl/rand.h +113 -0
  638. data/third_party/boringssl/include/openssl/rc4.h +90 -0
  639. data/third_party/boringssl/include/openssl/rsa.h +637 -0
  640. data/third_party/boringssl/include/openssl/safestack.h +16 -0
  641. data/third_party/boringssl/include/openssl/sha.h +256 -0
  642. data/third_party/boringssl/include/openssl/srtp.h +18 -0
  643. data/third_party/boringssl/include/openssl/ssl.h +4466 -0
  644. data/third_party/boringssl/include/openssl/ssl3.h +441 -0
  645. data/third_party/boringssl/include/openssl/stack.h +298 -0
  646. data/third_party/boringssl/include/openssl/stack_macros.h +4190 -0
  647. data/third_party/boringssl/include/openssl/thread.h +173 -0
  648. data/third_party/boringssl/include/openssl/time_support.h +90 -0
  649. data/third_party/boringssl/include/openssl/tls1.h +653 -0
  650. data/third_party/boringssl/include/openssl/type_check.h +91 -0
  651. data/third_party/boringssl/include/openssl/x509.h +1258 -0
  652. data/third_party/boringssl/include/openssl/x509_vfy.h +611 -0
  653. data/third_party/boringssl/include/openssl/x509v3.h +798 -0
  654. data/third_party/boringssl/ssl/custom_extensions.c +257 -0
  655. data/third_party/boringssl/ssl/d1_both.c +880 -0
  656. data/third_party/boringssl/ssl/d1_clnt.c +566 -0
  657. data/third_party/boringssl/ssl/d1_lib.c +340 -0
  658. data/third_party/boringssl/ssl/d1_meth.c +130 -0
  659. data/third_party/boringssl/ssl/d1_pkt.c +578 -0
  660. data/third_party/boringssl/ssl/d1_srtp.c +234 -0
  661. data/third_party/boringssl/ssl/d1_srvr.c +485 -0
  662. data/third_party/boringssl/ssl/dtls_record.c +308 -0
  663. data/third_party/boringssl/ssl/internal.h +1276 -0
  664. data/third_party/boringssl/ssl/pqueue/pqueue.c +197 -0
  665. data/third_party/boringssl/ssl/s3_both.c +571 -0
  666. data/third_party/boringssl/ssl/s3_clnt.c +2241 -0
  667. data/third_party/boringssl/ssl/s3_enc.c +494 -0
  668. data/third_party/boringssl/ssl/s3_lib.c +587 -0
  669. data/third_party/boringssl/ssl/s3_meth.c +166 -0
  670. data/third_party/boringssl/ssl/s3_pkt.c +732 -0
  671. data/third_party/boringssl/ssl/s3_srvr.c +2536 -0
  672. data/third_party/boringssl/ssl/ssl_aead_ctx.c +300 -0
  673. data/third_party/boringssl/ssl/ssl_asn1.c +718 -0
  674. data/third_party/boringssl/ssl/ssl_buffer.c +319 -0
  675. data/third_party/boringssl/ssl/ssl_cert.c +539 -0
  676. data/third_party/boringssl/ssl/ssl_cipher.c +2003 -0
  677. data/third_party/boringssl/ssl/ssl_file.c +633 -0
  678. data/third_party/boringssl/ssl/ssl_lib.c +2653 -0
  679. data/third_party/boringssl/ssl/ssl_rsa.c +423 -0
  680. data/third_party/boringssl/ssl/ssl_session.c +764 -0
  681. data/third_party/boringssl/ssl/ssl_stat.c +591 -0
  682. data/third_party/boringssl/ssl/t1_enc.c +708 -0
  683. data/third_party/boringssl/ssl/t1_lib.c +2905 -0
  684. data/third_party/boringssl/ssl/test/async_bio.h +45 -0
  685. data/third_party/boringssl/ssl/test/packeted_bio.h +44 -0
  686. data/third_party/boringssl/ssl/test/scoped_types.h +28 -0
  687. data/third_party/boringssl/ssl/test/test_config.h +108 -0
  688. data/third_party/boringssl/ssl/tls_record.c +342 -0
  689. data/third_party/nanopb/pb.h +547 -0
  690. data/third_party/nanopb/pb_common.c +97 -0
  691. data/third_party/nanopb/pb_common.h +42 -0
  692. data/third_party/nanopb/pb_decode.c +1319 -0
  693. data/third_party/nanopb/pb_decode.h +149 -0
  694. data/third_party/nanopb/pb_encode.c +690 -0
  695. data/third_party/nanopb/pb_encode.h +154 -0
  696. data/third_party/zlib/adler32.c +179 -0
  697. data/third_party/zlib/compress.c +80 -0
  698. data/third_party/zlib/crc32.c +425 -0
  699. data/third_party/zlib/crc32.h +441 -0
  700. data/third_party/zlib/deflate.c +1967 -0
  701. data/third_party/zlib/deflate.h +346 -0
  702. data/third_party/zlib/gzclose.c +25 -0
  703. data/third_party/zlib/gzguts.h +209 -0
  704. data/third_party/zlib/gzlib.c +634 -0
  705. data/third_party/zlib/gzread.c +594 -0
  706. data/third_party/zlib/gzwrite.c +577 -0
  707. data/third_party/zlib/infback.c +640 -0
  708. data/third_party/zlib/inffast.c +340 -0
  709. data/third_party/zlib/inffast.h +11 -0
  710. data/third_party/zlib/inffixed.h +94 -0
  711. data/third_party/zlib/inflate.c +1512 -0
  712. data/third_party/zlib/inflate.h +122 -0
  713. data/third_party/zlib/inftrees.c +306 -0
  714. data/third_party/zlib/inftrees.h +62 -0
  715. data/third_party/zlib/trees.c +1226 -0
  716. data/third_party/zlib/trees.h +128 -0
  717. data/third_party/zlib/uncompr.c +59 -0
  718. data/third_party/zlib/zconf.h +511 -0
  719. data/third_party/zlib/zlib.h +1768 -0
  720. data/third_party/zlib/zutil.c +324 -0
  721. data/third_party/zlib/zutil.h +253 -0
  722. metadata +504 -20
  723. data/Rakefile +0 -63
  724. data/src/ruby/pb/grpc/health/v1alpha/health.rb +0 -29
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  *
3
- * Copyright 2015, Google Inc.
3
+ * Copyright 2015-2016, Google Inc.
4
4
  * All rights reserved.
5
5
  *
6
6
  * Redistribution and use in source and binary forms, with or without
@@ -56,6 +56,12 @@ extern int grpc_tcp_trace;
56
56
  grpc_endpoint *grpc_tcp_create(grpc_fd *fd, size_t read_slice_size,
57
57
  const char *peer_string);
58
58
 
59
+ /* Return the tcp endpoint's fd, or -1 if this is not available. Does not
60
+ release the fd.
61
+ Requires: ep must be a tcp endpoint.
62
+ */
63
+ int grpc_tcp_fd(grpc_endpoint *ep);
64
+
59
65
  /* Destroy the tcp endpoint without closing its fd. *fd will be set and done
60
66
  * will be called when the endpoint is destroyed.
61
67
  * Requires: ep must be a tcp endpoint and fd must not be NULL. */
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  *
3
- * Copyright 2015, Google Inc.
3
+ * Copyright 2015-2016, Google Inc.
4
4
  * All rights reserved.
5
5
  *
6
6
  * Redistribution and use in source and binary forms, with or without
@@ -34,28 +34,38 @@
34
34
  #ifndef GRPC_INTERNAL_CORE_IOMGR_TCP_SERVER_H
35
35
  #define GRPC_INTERNAL_CORE_IOMGR_TCP_SERVER_H
36
36
 
37
+ #include "src/core/iomgr/closure.h"
37
38
  #include "src/core/iomgr/endpoint.h"
38
39
 
39
40
  /* Forward decl of grpc_tcp_server */
40
41
  typedef struct grpc_tcp_server grpc_tcp_server;
41
42
 
42
- /* Forward decl of grpc_tcp_listener */
43
- typedef struct grpc_tcp_listener grpc_tcp_listener;
43
+ typedef struct grpc_tcp_server_acceptor {
44
+ /* grpc_tcp_server_cb functions share a ref on from_server that is valid
45
+ until the function returns. */
46
+ grpc_tcp_server *from_server;
47
+ /* Indices that may be passed to grpc_tcp_server_port_fd(). */
48
+ unsigned port_index;
49
+ unsigned fd_index;
50
+ } grpc_tcp_server_acceptor;
44
51
 
45
52
  /* Called for newly connected TCP connections. */
46
53
  typedef void (*grpc_tcp_server_cb)(grpc_exec_ctx *exec_ctx, void *arg,
47
- grpc_endpoint *ep);
54
+ grpc_endpoint *ep,
55
+ grpc_tcp_server_acceptor *acceptor);
48
56
 
49
- /* Create a server, initially not bound to any ports */
50
- grpc_tcp_server *grpc_tcp_server_create(void);
57
+ /* Create a server, initially not bound to any ports. The caller owns one ref.
58
+ If shutdown_complete is not NULL, it will be used by
59
+ grpc_tcp_server_unref() when the ref count reaches zero. */
60
+ grpc_tcp_server *grpc_tcp_server_create(grpc_closure *shutdown_complete);
51
61
 
52
62
  /* Start listening to bound ports */
53
63
  void grpc_tcp_server_start(grpc_exec_ctx *exec_ctx, grpc_tcp_server *server,
54
64
  grpc_pollset **pollsets, size_t pollset_count,
55
65
  grpc_tcp_server_cb on_accept_cb, void *cb_arg);
56
66
 
57
- /* Add a port to the server, returning the newly created listener on success,
58
- or a null pointer on failure.
67
+ /* Add a port to the server, returning the newly allocated port on success, or
68
+ -1 on failure.
59
69
 
60
70
  The :: and 0.0.0.0 wildcard addresses are treated identically, accepting
61
71
  both IPv4 and IPv6 connections, but :: is the preferred style. This usually
@@ -63,21 +73,31 @@ void grpc_tcp_server_start(grpc_exec_ctx *exec_ctx, grpc_tcp_server *server,
63
73
  but not dualstack sockets. */
64
74
  /* TODO(ctiller): deprecate this, and make grpc_tcp_server_add_ports to handle
65
75
  all of the multiple socket port matching logic in one place */
66
- grpc_tcp_listener *grpc_tcp_server_add_port(grpc_tcp_server *s,
67
- const void *addr, size_t addr_len);
76
+ int grpc_tcp_server_add_port(grpc_tcp_server *s, const void *addr,
77
+ size_t addr_len);
68
78
 
69
- /* Returns the file descriptor of the Nth listening socket on this server,
70
- or -1 if the index is out of bounds.
79
+ /* Number of fds at the given port_index, or 0 if port_index is out of
80
+ bounds. */
81
+ unsigned grpc_tcp_server_port_fd_count(grpc_tcp_server *s, unsigned port_index);
71
82
 
72
- The file descriptor remains owned by the server, and will be cleaned
73
- up when grpc_tcp_server_destroy is called. */
74
- int grpc_tcp_server_get_fd(grpc_tcp_server *s, unsigned index);
83
+ /* Returns the file descriptor of the Mth (fd_index) listening socket of the Nth
84
+ (port_index) call to add_port() on this server, or -1 if the indices are out
85
+ of bounds. The file descriptor remains owned by the server, and will be
86
+ cleaned up when the ref count reaches zero. */
87
+ int grpc_tcp_server_port_fd(grpc_tcp_server *s, unsigned port_index,
88
+ unsigned fd_index);
75
89
 
76
- void grpc_tcp_server_destroy(grpc_exec_ctx *exec_ctx, grpc_tcp_server *server,
77
- grpc_closure *closure);
90
+ /* Ref s and return s. */
91
+ grpc_tcp_server *grpc_tcp_server_ref(grpc_tcp_server *s);
78
92
 
79
- int grpc_tcp_listener_get_port(grpc_tcp_listener *listener);
80
- void grpc_tcp_listener_ref(grpc_tcp_listener *listener);
81
- void grpc_tcp_listener_unref(grpc_tcp_listener *listener);
93
+ /* shutdown_starting is called when ref count has reached zero and the server is
94
+ about to be destroyed. The server will be deleted after it returns. Calling
95
+ grpc_tcp_server_ref() from it has no effect. */
96
+ void grpc_tcp_server_shutdown_starting_add(grpc_tcp_server *s,
97
+ grpc_closure *shutdown_starting);
98
+
99
+ /* If the refcount drops to zero, delete s, and call (exec_ctx==NULL) or enqueue
100
+ a call (exec_ctx!=NULL) to shutdown_complete. */
101
+ void grpc_tcp_server_unref(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s);
82
102
 
83
103
  #endif /* GRPC_INTERNAL_CORE_IOMGR_TCP_SERVER_H */
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  *
3
- * Copyright 2015, Google Inc.
3
+ * Copyright 2015-2016, Google Inc.
4
4
  * All rights reserved.
5
5
  *
6
6
  * Redistribution and use in source and binary forms, with or without
@@ -73,20 +73,22 @@ static gpr_once s_init_max_accept_queue_size;
73
73
  static int s_max_accept_queue_size;
74
74
 
75
75
  /* one listening port */
76
+ typedef struct grpc_tcp_listener grpc_tcp_listener;
76
77
  struct grpc_tcp_listener {
77
78
  int fd;
78
79
  grpc_fd *emfd;
79
80
  grpc_tcp_server *server;
80
81
  union {
81
- gpr_uint8 untyped[GRPC_MAX_SOCKADDR_SIZE];
82
+ uint8_t untyped[GRPC_MAX_SOCKADDR_SIZE];
82
83
  struct sockaddr sockaddr;
83
84
  struct sockaddr_un un;
84
85
  } addr;
85
86
  size_t addr_len;
86
87
  int port;
88
+ unsigned port_index;
89
+ unsigned fd_index;
87
90
  grpc_closure read_closure;
88
91
  grpc_closure destroyed_closure;
89
- gpr_refcount refs;
90
92
  struct grpc_tcp_listener *next;
91
93
  /* When we add a listener, more than one can be created, mainly because of
92
94
  IPv6. A sibling will still be in the normal list, but will be flagged
@@ -106,6 +108,7 @@ static void unlink_if_unix_domain_socket(const struct sockaddr_un *un) {
106
108
 
107
109
  /* the overall server */
108
110
  struct grpc_tcp_server {
111
+ gpr_refcount refs;
109
112
  /* Called whenever accept() succeeds on a server port. */
110
113
  grpc_tcp_server_cb on_accept_cb;
111
114
  void *on_accept_cb_arg;
@@ -122,8 +125,12 @@ struct grpc_tcp_server {
122
125
 
123
126
  /* linked list of server ports */
124
127
  grpc_tcp_listener *head;
128
+ grpc_tcp_listener *tail;
125
129
  unsigned nports;
126
130
 
131
+ /* List of closures passed to shutdown_starting_add(). */
132
+ grpc_closure_list shutdown_starting;
133
+
127
134
  /* shutdown callback */
128
135
  grpc_closure *shutdown_complete;
129
136
 
@@ -133,34 +140,42 @@ struct grpc_tcp_server {
133
140
  size_t pollset_count;
134
141
  };
135
142
 
136
- grpc_tcp_server *grpc_tcp_server_create(void) {
143
+ grpc_tcp_server *grpc_tcp_server_create(grpc_closure *shutdown_complete) {
137
144
  grpc_tcp_server *s = gpr_malloc(sizeof(grpc_tcp_server));
145
+ gpr_ref_init(&s->refs, 1);
138
146
  gpr_mu_init(&s->mu);
139
147
  s->active_ports = 0;
140
148
  s->destroyed_ports = 0;
141
149
  s->shutdown = 0;
150
+ s->shutdown_starting.head = NULL;
151
+ s->shutdown_starting.tail = NULL;
152
+ s->shutdown_complete = shutdown_complete;
142
153
  s->on_accept_cb = NULL;
143
154
  s->on_accept_cb_arg = NULL;
144
155
  s->head = NULL;
156
+ s->tail = NULL;
145
157
  s->nports = 0;
146
158
  return s;
147
159
  }
148
160
 
149
161
  static void finish_shutdown(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s) {
150
- grpc_exec_ctx_enqueue(exec_ctx, s->shutdown_complete, 1);
162
+ if (s->shutdown_complete != NULL) {
163
+ grpc_exec_ctx_enqueue(exec_ctx, s->shutdown_complete, true, NULL);
164
+ }
151
165
 
152
166
  gpr_mu_destroy(&s->mu);
153
167
 
154
168
  while (s->head) {
155
169
  grpc_tcp_listener *sp = s->head;
156
170
  s->head = sp->next;
157
- grpc_tcp_listener_unref(sp);
171
+ gpr_free(sp);
158
172
  }
159
173
 
160
174
  gpr_free(s);
161
175
  }
162
176
 
163
- static void destroyed_port(grpc_exec_ctx *exec_ctx, void *server, int success) {
177
+ static void destroyed_port(grpc_exec_ctx *exec_ctx, void *server,
178
+ bool success) {
164
179
  grpc_tcp_server *s = server;
165
180
  gpr_mu_lock(&s->mu);
166
181
  s->destroyed_ports++;
@@ -203,15 +218,12 @@ static void deactivated_all_ports(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s) {
203
218
  }
204
219
  }
205
220
 
206
- void grpc_tcp_server_destroy(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s,
207
- grpc_closure *closure) {
221
+ static void tcp_server_destroy(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s) {
208
222
  gpr_mu_lock(&s->mu);
209
223
 
210
224
  GPR_ASSERT(!s->shutdown);
211
225
  s->shutdown = 1;
212
226
 
213
- s->shutdown_complete = closure;
214
-
215
227
  /* shutdown all fd's */
216
228
  if (s->active_ports) {
217
229
  grpc_tcp_listener *sp;
@@ -306,8 +318,10 @@ error:
306
318
  }
307
319
 
308
320
  /* event manager callback when reads are ready */
309
- static void on_read(grpc_exec_ctx *exec_ctx, void *arg, int success) {
321
+ static void on_read(grpc_exec_ctx *exec_ctx, void *arg, bool success) {
310
322
  grpc_tcp_listener *sp = arg;
323
+ grpc_tcp_server_acceptor acceptor = {sp->server, sp->port_index,
324
+ sp->fd_index};
311
325
  grpc_fd *fdobj;
312
326
  size_t i;
313
327
 
@@ -355,7 +369,8 @@ static void on_read(grpc_exec_ctx *exec_ctx, void *arg, int success) {
355
369
  }
356
370
  sp->server->on_accept_cb(
357
371
  exec_ctx, sp->server->on_accept_cb_arg,
358
- grpc_tcp_create(fdobj, GRPC_TCP_DEFAULT_READ_SLICE_SIZE, addr_str));
372
+ grpc_tcp_create(fdobj, GRPC_TCP_DEFAULT_READ_SLICE_SIZE, addr_str),
373
+ &acceptor);
359
374
 
360
375
  gpr_free(name);
361
376
  gpr_free(addr_str);
@@ -375,7 +390,9 @@ error:
375
390
 
376
391
  static grpc_tcp_listener *add_socket_to_server(grpc_tcp_server *s, int fd,
377
392
  const struct sockaddr *addr,
378
- size_t addr_len) {
393
+ size_t addr_len,
394
+ unsigned port_index,
395
+ unsigned fd_index) {
379
396
  grpc_tcp_listener *sp = NULL;
380
397
  int port;
381
398
  char *addr_str;
@@ -389,17 +406,23 @@ static grpc_tcp_listener *add_socket_to_server(grpc_tcp_server *s, int fd,
389
406
  s->nports++;
390
407
  GPR_ASSERT(!s->on_accept_cb && "must add ports before starting server");
391
408
  sp = gpr_malloc(sizeof(grpc_tcp_listener));
392
- sp->next = s->head;
393
- s->head = sp;
409
+ sp->next = NULL;
410
+ if (s->head == NULL) {
411
+ s->head = sp;
412
+ } else {
413
+ s->tail->next = sp;
414
+ }
415
+ s->tail = sp;
394
416
  sp->server = s;
395
417
  sp->fd = fd;
396
418
  sp->emfd = grpc_fd_create(fd, name);
397
419
  memcpy(sp->addr.untyped, addr, addr_len);
398
420
  sp->addr_len = addr_len;
399
421
  sp->port = port;
422
+ sp->port_index = port_index;
423
+ sp->fd_index = fd_index;
400
424
  sp->is_sibling = 0;
401
425
  sp->sibling = NULL;
402
- gpr_ref_init(&sp->refs, 1);
403
426
  GPR_ASSERT(sp->emfd);
404
427
  gpr_mu_unlock(&s->mu);
405
428
  gpr_free(addr_str);
@@ -409,8 +432,8 @@ static grpc_tcp_listener *add_socket_to_server(grpc_tcp_server *s, int fd,
409
432
  return sp;
410
433
  }
411
434
 
412
- grpc_tcp_listener *grpc_tcp_server_add_port(grpc_tcp_server *s,
413
- const void *addr, size_t addr_len) {
435
+ int grpc_tcp_server_add_port(grpc_tcp_server *s, const void *addr,
436
+ size_t addr_len) {
414
437
  grpc_tcp_listener *sp;
415
438
  grpc_tcp_listener *sp2 = NULL;
416
439
  int fd;
@@ -423,7 +446,11 @@ grpc_tcp_listener *grpc_tcp_server_add_port(grpc_tcp_server *s,
423
446
  struct sockaddr_storage sockname_temp;
424
447
  socklen_t sockname_len;
425
448
  int port;
426
-
449
+ unsigned port_index = 0;
450
+ unsigned fd_index = 0;
451
+ if (s->tail != NULL) {
452
+ port_index = s->tail->port_index + 1;
453
+ }
427
454
  if (((struct sockaddr *)addr)->sa_family == AF_UNIX) {
428
455
  unlink_if_unix_domain_socket(addr);
429
456
  }
@@ -462,11 +489,13 @@ grpc_tcp_listener *grpc_tcp_server_add_port(grpc_tcp_server *s,
462
489
  addr = (struct sockaddr *)&wild6;
463
490
  addr_len = sizeof(wild6);
464
491
  fd = grpc_create_dualstack_socket(addr, SOCK_STREAM, 0, &dsmode);
465
- sp = add_socket_to_server(s, fd, addr, addr_len);
492
+ sp = add_socket_to_server(s, fd, addr, addr_len, port_index, fd_index);
466
493
  if (fd >= 0 && dsmode == GRPC_DSMODE_DUALSTACK) {
467
494
  goto done;
468
495
  }
469
-
496
+ if (sp != NULL) {
497
+ ++fd_index;
498
+ }
470
499
  /* If we didn't get a dualstack socket, also listen on 0.0.0.0. */
471
500
  if (port == 0 && sp != NULL) {
472
501
  grpc_sockaddr_set_port((struct sockaddr *)&wild4, sp->port);
@@ -485,20 +514,46 @@ grpc_tcp_listener *grpc_tcp_server_add_port(grpc_tcp_server *s,
485
514
  addr = (struct sockaddr *)&addr4_copy;
486
515
  addr_len = sizeof(addr4_copy);
487
516
  }
488
- sp = add_socket_to_server(s, fd, addr, addr_len);
489
- if (sp != NULL) sp->sibling = sp2;
490
- if (sp2 != NULL) sp2->is_sibling = 1;
517
+ sp = add_socket_to_server(s, fd, addr, addr_len, port_index, fd_index);
518
+ if (sp2 != NULL && sp != NULL) {
519
+ sp2->sibling = sp;
520
+ sp->is_sibling = 1;
521
+ }
491
522
 
492
523
  done:
493
524
  gpr_free(allocated_addr);
494
- return sp;
525
+ if (sp != NULL) {
526
+ return sp->port;
527
+ } else {
528
+ return -1;
529
+ }
495
530
  }
496
531
 
497
- int grpc_tcp_server_get_fd(grpc_tcp_server *s, unsigned port_index) {
532
+ unsigned grpc_tcp_server_port_fd_count(grpc_tcp_server *s,
533
+ unsigned port_index) {
534
+ unsigned num_fds = 0;
498
535
  grpc_tcp_listener *sp;
499
- for (sp = s->head; sp && port_index != 0; sp = sp->next, port_index--)
536
+ for (sp = s->head; sp && port_index != 0; sp = sp->next) {
537
+ if (!sp->is_sibling) {
538
+ --port_index;
539
+ }
540
+ }
541
+ for (; sp; sp = sp->sibling, ++num_fds)
542
+ ;
543
+ return num_fds;
544
+ }
545
+
546
+ int grpc_tcp_server_port_fd(grpc_tcp_server *s, unsigned port_index,
547
+ unsigned fd_index) {
548
+ grpc_tcp_listener *sp;
549
+ for (sp = s->head; sp && port_index != 0; sp = sp->next) {
550
+ if (!sp->is_sibling) {
551
+ --port_index;
552
+ }
553
+ }
554
+ for (; sp && fd_index != 0; sp = sp->sibling, --fd_index)
500
555
  ;
501
- if (port_index == 0 && sp) {
556
+ if (sp) {
502
557
  return sp->fd;
503
558
  } else {
504
559
  return -1;
@@ -531,31 +586,33 @@ void grpc_tcp_server_start(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s,
531
586
  gpr_mu_unlock(&s->mu);
532
587
  }
533
588
 
534
- int grpc_tcp_listener_get_port(grpc_tcp_listener *listener) {
535
- if (listener != NULL) {
536
- grpc_tcp_listener *sp = listener;
537
- return sp->port;
538
- } else {
539
- return 0;
540
- }
589
+ grpc_tcp_server *grpc_tcp_server_ref(grpc_tcp_server *s) {
590
+ gpr_ref(&s->refs);
591
+ return s;
541
592
  }
542
593
 
543
- void grpc_tcp_listener_ref(grpc_tcp_listener *listener) {
544
- grpc_tcp_listener *sp = listener;
545
- gpr_ref(&sp->refs);
594
+ void grpc_tcp_server_shutdown_starting_add(grpc_tcp_server *s,
595
+ grpc_closure *shutdown_starting) {
596
+ gpr_mu_lock(&s->mu);
597
+ grpc_closure_list_add(&s->shutdown_starting, shutdown_starting, 1);
598
+ gpr_mu_unlock(&s->mu);
546
599
  }
547
600
 
548
- void grpc_tcp_listener_unref(grpc_tcp_listener *listener) {
549
- grpc_tcp_listener *sp = listener;
550
- if (sp->is_sibling) return;
551
- if (gpr_unref(&sp->refs)) {
552
- grpc_tcp_listener *sibling = sp->sibling;
553
- while (sibling) {
554
- sp = sibling;
555
- sibling = sp->sibling;
556
- gpr_free(sp);
601
+ void grpc_tcp_server_unref(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s) {
602
+ if (gpr_unref(&s->refs)) {
603
+ /* Complete shutdown_starting work before destroying. */
604
+ grpc_exec_ctx local_exec_ctx = GRPC_EXEC_CTX_INIT;
605
+ gpr_mu_lock(&s->mu);
606
+ grpc_exec_ctx_enqueue_list(&local_exec_ctx, &s->shutdown_starting, NULL);
607
+ gpr_mu_unlock(&s->mu);
608
+ if (exec_ctx == NULL) {
609
+ grpc_exec_ctx_flush(&local_exec_ctx);
610
+ tcp_server_destroy(&local_exec_ctx, s);
611
+ grpc_exec_ctx_finish(&local_exec_ctx);
612
+ } else {
613
+ grpc_exec_ctx_finish(&local_exec_ctx);
614
+ tcp_server_destroy(exec_ctx, s);
557
615
  }
558
- gpr_free(listener);
559
616
  }
560
617
  }
561
618
 
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  *
3
- * Copyright 2015, Google Inc.
3
+ * Copyright 2015-2016, Google Inc.
4
4
  * All rights reserved.
5
5
  *
6
6
  * Redistribution and use in source and binary forms, with or without
@@ -55,29 +55,31 @@
55
55
  #define MIN_SAFE_ACCEPT_QUEUE_SIZE 100
56
56
 
57
57
  /* one listening port */
58
+ typedef struct grpc_tcp_listener grpc_tcp_listener;
58
59
  struct grpc_tcp_listener {
59
60
  /* This seemingly magic number comes from AcceptEx's documentation. each
60
61
  address buffer needs to have at least 16 more bytes at their end. */
61
- gpr_uint8 addresses[(sizeof(struct sockaddr_in6) + 16) * 2];
62
+ uint8_t addresses[(sizeof(struct sockaddr_in6) + 16) * 2];
62
63
  /* This will hold the socket for the next accept. */
63
64
  SOCKET new_socket;
64
65
  /* The listener winsocket. */
65
66
  grpc_winsocket *socket;
66
67
  /* The actual TCP port number. */
67
68
  int port;
69
+ unsigned port_index;
68
70
  grpc_tcp_server *server;
69
71
  /* The cached AcceptEx for that port. */
70
72
  LPFN_ACCEPTEX AcceptEx;
71
73
  int shutting_down;
72
74
  /* closure for socket notification of accept being ready */
73
75
  grpc_closure on_accept;
74
- gpr_refcount refs;
75
76
  /* linked list */
76
77
  struct grpc_tcp_listener *next;
77
78
  };
78
79
 
79
80
  /* the overall server */
80
81
  struct grpc_tcp_server {
82
+ gpr_refcount refs;
81
83
  /* Called whenever accept() succeeds on a server port. */
82
84
  grpc_tcp_server_cb on_accept_cb;
83
85
  void *on_accept_cb_arg;
@@ -89,6 +91,10 @@ struct grpc_tcp_server {
89
91
 
90
92
  /* linked list of server ports */
91
93
  grpc_tcp_listener *head;
94
+ grpc_tcp_listener *tail;
95
+
96
+ /* List of closures passed to shutdown_starting_add(). */
97
+ grpc_closure_list shutdown_starting;
92
98
 
93
99
  /* shutdown callback */
94
100
  grpc_closure *shutdown_complete;
@@ -96,21 +102,25 @@ struct grpc_tcp_server {
96
102
 
97
103
  /* Public function. Allocates the proper data structures to hold a
98
104
  grpc_tcp_server. */
99
- grpc_tcp_server *grpc_tcp_server_create(void) {
105
+ grpc_tcp_server *grpc_tcp_server_create(grpc_closure *shutdown_complete) {
100
106
  grpc_tcp_server *s = gpr_malloc(sizeof(grpc_tcp_server));
107
+ gpr_ref_init(&s->refs, 1);
101
108
  gpr_mu_init(&s->mu);
102
109
  s->active_ports = 0;
103
110
  s->on_accept_cb = NULL;
104
111
  s->on_accept_cb_arg = NULL;
105
112
  s->head = NULL;
106
- s->shutdown_complete = NULL;
113
+ s->tail = NULL;
114
+ s->shutdown_starting.head = NULL;
115
+ s->shutdown_starting.tail = NULL;
116
+ s->shutdown_complete = shutdown_complete;
107
117
  return s;
108
118
  }
109
119
 
110
- static void dont_care_about_shutdown_completion(void *arg) {}
111
-
112
120
  static void finish_shutdown(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s) {
113
- grpc_exec_ctx_enqueue(exec_ctx, s->shutdown_complete, 1);
121
+ if (s->shutdown_complete != NULL) {
122
+ grpc_exec_ctx_enqueue(exec_ctx, s->shutdown_complete, true, NULL);
123
+ }
114
124
 
115
125
  /* Now that the accepts have been aborted, we can destroy the sockets.
116
126
  The IOCP won't get notified on these, so we can flag them as already
@@ -120,20 +130,28 @@ static void finish_shutdown(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s) {
120
130
  s->head = sp->next;
121
131
  sp->next = NULL;
122
132
  grpc_winsocket_destroy(sp->socket);
123
- grpc_tcp_listener_unref(sp);
133
+ gpr_free(sp);
124
134
  }
125
135
  gpr_free(s);
126
136
  }
127
137
 
128
- /* Public function. Stops and destroys a grpc_tcp_server. */
129
- void grpc_tcp_server_destroy(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s,
130
- grpc_closure *shutdown_complete) {
138
+ grpc_tcp_server *grpc_tcp_server_ref(grpc_tcp_server *s) {
139
+ gpr_ref(&s->refs);
140
+ return s;
141
+ }
142
+
143
+ void grpc_tcp_server_shutdown_starting_add(grpc_tcp_server *s,
144
+ grpc_closure *shutdown_starting) {
145
+ gpr_mu_lock(&s->mu);
146
+ grpc_closure_list_add(&s->shutdown_starting, shutdown_starting, 1);
147
+ gpr_mu_unlock(&s->mu);
148
+ }
149
+
150
+ static void tcp_server_destroy(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s) {
131
151
  int immediately_done = 0;
132
152
  grpc_tcp_listener *sp;
133
153
  gpr_mu_lock(&s->mu);
134
154
 
135
- s->shutdown_complete = shutdown_complete;
136
-
137
155
  /* First, shutdown all fd's. This will queue abortion calls for all
138
156
  of the pending accepts due to the normal operation mechanism. */
139
157
  if (s->active_ports == 0) {
@@ -150,6 +168,24 @@ void grpc_tcp_server_destroy(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s,
150
168
  }
151
169
  }
152
170
 
171
+ void grpc_tcp_server_unref(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s) {
172
+ if (gpr_unref(&s->refs)) {
173
+ /* Complete shutdown_starting work before destroying. */
174
+ grpc_exec_ctx local_exec_ctx = GRPC_EXEC_CTX_INIT;
175
+ gpr_mu_lock(&s->mu);
176
+ grpc_exec_ctx_enqueue_list(&local_exec_ctx, &s->shutdown_starting, NULL);
177
+ gpr_mu_unlock(&s->mu);
178
+ if (exec_ctx == NULL) {
179
+ grpc_exec_ctx_flush(&local_exec_ctx);
180
+ tcp_server_destroy(&local_exec_ctx, s);
181
+ grpc_exec_ctx_finish(&local_exec_ctx);
182
+ } else {
183
+ grpc_exec_ctx_finish(&local_exec_ctx);
184
+ tcp_server_destroy(exec_ctx, s);
185
+ }
186
+ }
187
+ }
188
+
153
189
  /* Prepare (bind) a recently-created socket for listening. */
154
190
  static int prepare_socket(SOCKET sock, const struct sockaddr *addr,
155
191
  size_t addr_len) {
@@ -275,8 +311,9 @@ failure:
275
311
  }
276
312
 
277
313
  /* Event manager callback when reads are ready. */
278
- static void on_accept(grpc_exec_ctx *exec_ctx, void *arg, int from_iocp) {
314
+ static void on_accept(grpc_exec_ctx *exec_ctx, void *arg, bool from_iocp) {
279
315
  grpc_tcp_listener *sp = arg;
316
+ grpc_tcp_server_acceptor acceptor = {sp->server, sp->port_index, 0};
280
317
  SOCKET sock = sp->new_socket;
281
318
  grpc_winsocket_callback_info *info = &sp->socket->read_info;
282
319
  grpc_endpoint *ep = NULL;
@@ -343,7 +380,9 @@ static void on_accept(grpc_exec_ctx *exec_ctx, void *arg, int from_iocp) {
343
380
 
344
381
  /* The only time we should call our callback, is where we successfully
345
382
  managed to accept a connection, and created an endpoint. */
346
- if (ep) sp->server->on_accept_cb(exec_ctx, sp->server->on_accept_cb_arg, ep);
383
+ if (ep)
384
+ sp->server->on_accept_cb(exec_ctx, sp->server->on_accept_cb_arg, ep,
385
+ &acceptor);
347
386
  /* As we were notified from the IOCP of one and exactly one accept,
348
387
  the former socked we created has now either been destroy or assigned
349
388
  to the new connection. We need to create a new one for the next
@@ -353,7 +392,8 @@ static void on_accept(grpc_exec_ctx *exec_ctx, void *arg, int from_iocp) {
353
392
 
354
393
  static grpc_tcp_listener *add_socket_to_server(grpc_tcp_server *s, SOCKET sock,
355
394
  const struct sockaddr *addr,
356
- size_t addr_len) {
395
+ size_t addr_len,
396
+ unsigned port_index) {
357
397
  grpc_tcp_listener *sp = NULL;
358
398
  int port;
359
399
  int status;
@@ -382,15 +422,20 @@ static grpc_tcp_listener *add_socket_to_server(grpc_tcp_server *s, SOCKET sock,
382
422
  gpr_mu_lock(&s->mu);
383
423
  GPR_ASSERT(!s->on_accept_cb && "must add ports before starting server");
384
424
  sp = gpr_malloc(sizeof(grpc_tcp_listener));
385
- sp->next = s->head;
386
- s->head = sp;
425
+ sp->next = NULL;
426
+ if (s->head == NULL) {
427
+ s->head = sp;
428
+ } else {
429
+ s->tail->next = sp;
430
+ }
431
+ s->tail = sp;
387
432
  sp->server = s;
388
433
  sp->socket = grpc_winsocket_create(sock, "listener");
389
434
  sp->shutting_down = 0;
390
435
  sp->AcceptEx = AcceptEx;
391
436
  sp->new_socket = INVALID_SOCKET;
392
437
  sp->port = port;
393
- gpr_ref_init(&sp->refs, 1);
438
+ sp->port_index = port_index;
394
439
  grpc_closure_init(&sp->on_accept, on_accept, sp);
395
440
  GPR_ASSERT(sp->socket);
396
441
  gpr_mu_unlock(&s->mu);
@@ -399,8 +444,8 @@ static grpc_tcp_listener *add_socket_to_server(grpc_tcp_server *s, SOCKET sock,
399
444
  return sp;
400
445
  }
401
446
 
402
- grpc_tcp_listener *grpc_tcp_server_add_port(grpc_tcp_server *s,
403
- const void *addr, size_t addr_len) {
447
+ int grpc_tcp_server_add_port(grpc_tcp_server *s, const void *addr,
448
+ size_t addr_len) {
404
449
  grpc_tcp_listener *sp;
405
450
  SOCKET sock;
406
451
  struct sockaddr_in6 addr6_v4mapped;
@@ -409,6 +454,10 @@ grpc_tcp_listener *grpc_tcp_server_add_port(grpc_tcp_server *s,
409
454
  struct sockaddr_storage sockname_temp;
410
455
  socklen_t sockname_len;
411
456
  int port;
457
+ unsigned port_index = 0;
458
+ if (s->tail != NULL) {
459
+ port_index = s->tail->port_index + 1;
460
+ }
412
461
 
413
462
  /* Check if this is a wildcard port, and if so, try to keep the port the same
414
463
  as some previously created listener. */
@@ -450,18 +499,39 @@ grpc_tcp_listener *grpc_tcp_server_add_port(grpc_tcp_server *s,
450
499
  gpr_free(utf8_message);
451
500
  }
452
501
 
453
- sp = add_socket_to_server(s, sock, addr, addr_len);
502
+ sp = add_socket_to_server(s, sock, addr, addr_len, port_index);
454
503
  gpr_free(allocated_addr);
455
504
 
456
- return sp;
505
+ if (sp) {
506
+ return sp->port;
507
+ } else {
508
+ return -1;
509
+ }
457
510
  }
458
511
 
459
- int grpc_tcp_server_get_fd(grpc_tcp_server *s, unsigned port_index) {
512
+ unsigned grpc_tcp_server_port_fd_count(grpc_tcp_server *s,
513
+ unsigned port_index) {
460
514
  grpc_tcp_listener *sp;
461
- for (sp = s->head; sp && port_index != 0; sp = sp->next, port_index--)
515
+ for (sp = s->head; sp && port_index != 0; sp = sp->next, --port_index)
462
516
  ;
463
- if (port_index == 0 && sp) {
464
- return _open_osfhandle(sp->socket->socket, 0);
517
+ if (sp) {
518
+ return 1;
519
+ } else {
520
+ return 0;
521
+ }
522
+ }
523
+
524
+ int grpc_tcp_server_port_fd(grpc_tcp_server *s, unsigned port_index,
525
+ unsigned fd_index) {
526
+ grpc_tcp_listener *sp;
527
+ if (fd_index != 0) {
528
+ /* Windows implementation has only one fd per port_index. */
529
+ return -1;
530
+ }
531
+ for (sp = s->head; sp && port_index != 0; sp = sp->next, --port_index)
532
+ ;
533
+ if (sp) {
534
+ return _open_osfhandle((intptr_t)sp->socket->socket, 0);
465
535
  } else {
466
536
  return -1;
467
537
  }
@@ -485,25 +555,4 @@ void grpc_tcp_server_start(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s,
485
555
  gpr_mu_unlock(&s->mu);
486
556
  }
487
557
 
488
- int grpc_tcp_listener_get_port(grpc_tcp_listener *listener) {
489
- if (listener != NULL) {
490
- grpc_tcp_listener *sp = listener;
491
- return sp->port;
492
- } else {
493
- return 0;
494
- }
495
- }
496
-
497
- void grpc_tcp_listener_ref(grpc_tcp_listener *listener) {
498
- grpc_tcp_listener *sp = listener;
499
- gpr_ref(&sp->refs);
500
- }
501
-
502
- void grpc_tcp_listener_unref(grpc_tcp_listener *listener) {
503
- grpc_tcp_listener *sp = listener;
504
- if (gpr_unref(&sp->refs)) {
505
- gpr_free(listener);
506
- }
507
- }
508
-
509
558
  #endif /* GPR_WINSOCK_SOCKET */