grpc 0.12.0 → 0.13.0.pre1.1

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 (673) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +5707 -22222
  3. data/include/grpc/byte_buffer.h +2 -83
  4. data/include/grpc/census.h +191 -121
  5. data/include/grpc/compression.h +14 -38
  6. data/include/grpc/grpc.h +88 -434
  7. data/include/grpc/grpc_security.h +76 -46
  8. data/include/grpc/grpc_zookeeper.h +1 -1
  9. data/include/grpc/impl/codegen/alloc.h +74 -0
  10. data/include/grpc/impl/codegen/atm.h +92 -0
  11. data/include/grpc/impl/codegen/atm_gcc_atomic.h +72 -0
  12. data/include/grpc/impl/codegen/atm_gcc_sync.h +87 -0
  13. data/include/grpc/impl/codegen/atm_win32.h +125 -0
  14. data/include/grpc/impl/codegen/byte_buffer.h +121 -0
  15. data/include/grpc/impl/codegen/compression_types.h +73 -0
  16. data/include/grpc/impl/codegen/connectivity_state.h +59 -0
  17. data/include/grpc/impl/codegen/grpc_types.h +373 -0
  18. data/include/grpc/impl/codegen/log.h +110 -0
  19. data/include/grpc/impl/codegen/port_platform.h +362 -0
  20. data/include/grpc/impl/codegen/propagation_bits.h +67 -0
  21. data/include/grpc/impl/codegen/slice.h +182 -0
  22. data/include/grpc/impl/codegen/slice_buffer.h +105 -0
  23. data/include/grpc/impl/codegen/status.h +163 -0
  24. data/include/grpc/impl/codegen/sync.h +316 -0
  25. data/include/grpc/impl/codegen/sync_generic.h +55 -0
  26. data/{src/core/census/context.h → include/grpc/impl/codegen/sync_posix.h} +11 -11
  27. data/include/grpc/impl/codegen/sync_win32.h +49 -0
  28. data/include/grpc/impl/codegen/time.h +132 -0
  29. data/include/grpc/status.h +2 -126
  30. data/include/grpc/support/alloc.h +2 -35
  31. data/include/grpc/support/atm.h +2 -55
  32. data/include/grpc/support/atm_gcc_atomic.h +5 -38
  33. data/include/grpc/support/atm_gcc_sync.h +2 -50
  34. data/include/grpc/support/atm_win32.h +2 -88
  35. data/include/grpc/support/avl.h +7 -7
  36. data/include/grpc/support/cmdline.h +15 -13
  37. data/include/grpc/support/cpu.h +5 -3
  38. data/include/grpc/support/histogram.h +23 -20
  39. data/include/grpc/support/host_port.h +5 -3
  40. data/include/grpc/support/log.h +2 -71
  41. data/include/grpc/support/log_win32.h +2 -2
  42. data/include/grpc/support/port_platform.h +2 -319
  43. data/include/grpc/support/slice.h +2 -145
  44. data/include/grpc/support/slice_buffer.h +2 -65
  45. data/include/grpc/support/string_util.h +3 -3
  46. data/include/grpc/support/subprocess.h +8 -6
  47. data/include/grpc/support/sync.h +2 -278
  48. data/include/grpc/support/sync_generic.h +2 -18
  49. data/include/grpc/support/sync_posix.h +2 -10
  50. data/include/grpc/support/sync_win32.h +2 -12
  51. data/include/grpc/support/thd.h +11 -11
  52. data/include/grpc/support/time.h +2 -91
  53. data/include/grpc/support/tls.h +1 -1
  54. data/include/grpc/support/tls_gcc.h +1 -1
  55. data/include/grpc/support/tls_msvc.h +1 -1
  56. data/include/grpc/support/tls_pthread.h +2 -2
  57. data/src/boringssl/err_data.c +1252 -0
  58. data/src/core/census/context.c +492 -8
  59. data/src/core/census/grpc_filter.c +3 -3
  60. data/src/core/census/initialize.c +4 -7
  61. data/src/core/census/operation.c +2 -2
  62. data/src/core/census/placeholders.c +109 -0
  63. data/src/core/census/rpc_metric_id.h +6 -6
  64. data/src/core/census/tracing.c +1 -1
  65. data/src/core/channel/channel_args.c +4 -3
  66. data/src/core/channel/channel_stack.c +1 -1
  67. data/src/core/channel/client_channel.c +18 -14
  68. data/src/core/channel/client_uchannel.c +3 -3
  69. data/src/core/channel/compress_filter.c +8 -8
  70. data/src/core/channel/http_client_filter.c +2 -2
  71. data/src/core/channel/http_server_filter.c +9 -9
  72. data/src/core/channel/subchannel_call_holder.c +12 -10
  73. data/src/core/client_config/lb_policies/pick_first.c +49 -31
  74. data/src/core/client_config/lb_policies/round_robin.c +7 -7
  75. data/src/core/client_config/resolvers/dns_resolver.c +3 -3
  76. data/src/core/client_config/resolvers/sockaddr_resolver.c +5 -5
  77. data/src/core/client_config/subchannel.c +36 -25
  78. data/src/core/compression/algorithm.c +3 -3
  79. data/src/core/httpcli/format_request.c +1 -1
  80. data/src/core/httpcli/httpcli.c +5 -5
  81. data/src/core/httpcli/httpcli_security_connector.c +2 -3
  82. data/src/core/httpcli/parser.c +7 -7
  83. data/src/core/httpcli/parser.h +1 -1
  84. data/src/core/iomgr/closure.c +7 -7
  85. data/src/core/iomgr/closure.h +6 -5
  86. data/src/core/iomgr/exec_ctx.c +12 -8
  87. data/src/core/iomgr/exec_ctx.h +12 -5
  88. data/src/core/iomgr/executor.c +4 -4
  89. data/src/core/iomgr/executor.h +2 -2
  90. data/src/core/iomgr/fd_posix.c +28 -17
  91. data/src/core/iomgr/fd_posix.h +7 -4
  92. data/src/core/iomgr/iocp_windows.c +6 -8
  93. data/src/core/iomgr/pollset_multipoller_with_epoll.c +70 -5
  94. data/src/core/iomgr/pollset_multipoller_with_poll_posix.c +4 -2
  95. data/src/core/iomgr/pollset_posix.c +15 -15
  96. data/src/core/iomgr/pollset_posix.h +4 -2
  97. data/src/core/iomgr/pollset_windows.c +3 -12
  98. data/src/core/iomgr/resolve_address_posix.c +2 -2
  99. data/src/core/iomgr/resolve_address_windows.c +2 -2
  100. data/src/core/iomgr/sockaddr_utils.c +6 -6
  101. data/src/core/iomgr/sockaddr_win32.h +1 -6
  102. data/src/core/iomgr/tcp_client_posix.c +7 -7
  103. data/src/core/iomgr/tcp_client_windows.c +4 -4
  104. data/src/core/iomgr/tcp_posix.c +14 -8
  105. data/src/core/iomgr/tcp_posix.h +7 -1
  106. data/src/core/iomgr/tcp_server.h +40 -20
  107. data/src/core/iomgr/tcp_server_posix.c +106 -49
  108. data/src/core/iomgr/tcp_server_windows.c +98 -49
  109. data/src/core/iomgr/tcp_windows.c +11 -15
  110. data/src/core/iomgr/timer.c +8 -8
  111. data/src/core/iomgr/timer.h +1 -1
  112. data/src/core/iomgr/timer_heap.c +10 -10
  113. data/src/core/iomgr/timer_heap.h +2 -2
  114. data/src/core/iomgr/udp_server.c +2 -12
  115. data/src/core/iomgr/udp_server.h +1 -9
  116. data/src/core/iomgr/workqueue.h +2 -4
  117. data/src/core/iomgr/workqueue_posix.c +3 -3
  118. data/src/core/json/json_reader.c +11 -12
  119. data/src/core/json/json_reader.h +4 -4
  120. data/src/core/json/json_string.c +19 -19
  121. data/src/core/json/json_writer.c +7 -9
  122. data/src/core/profiling/basic_timers.c +1 -1
  123. data/src/core/security/base64.c +9 -9
  124. data/src/core/security/client_auth_filter.c +4 -4
  125. data/src/core/security/credentials.c +5 -5
  126. data/src/core/security/google_default_credentials.c +3 -3
  127. data/src/core/security/handshake.c +6 -5
  128. data/src/core/security/json_token.c +13 -7
  129. data/src/core/security/jwt_verifier.c +3 -2
  130. data/src/core/security/secure_endpoint.c +16 -16
  131. data/src/core/security/security_connector.c +47 -17
  132. data/src/core/security/security_connector.h +5 -5
  133. data/src/core/security/server_auth_filter.c +3 -3
  134. data/src/core/security/server_secure_chttp2.c +30 -31
  135. data/src/core/statistics/census_interface.h +2 -2
  136. data/src/core/statistics/census_rpc_stats.h +3 -3
  137. data/src/core/support/alloc.c +1 -1
  138. data/src/core/support/cpu_posix.c +2 -2
  139. data/src/core/support/env_linux.c +12 -2
  140. data/src/core/support/env_win32.c +15 -7
  141. data/src/core/support/histogram.c +5 -5
  142. data/src/core/support/log_posix.c +1 -1
  143. data/src/core/support/log_win32.c +4 -3
  144. data/src/core/support/murmur_hash.c +11 -11
  145. data/src/core/support/murmur_hash.h +1 -1
  146. data/src/core/support/slice.c +11 -11
  147. data/src/core/support/slice_buffer.c +6 -6
  148. data/src/core/support/stack_lockfree.c +20 -10
  149. data/src/core/support/string.c +15 -15
  150. data/src/core/support/string.h +5 -5
  151. data/src/core/support/string_win32.c +5 -5
  152. data/src/core/support/subprocess_windows.c +141 -0
  153. data/src/core/support/sync.c +4 -4
  154. data/src/core/support/sync_posix.c +2 -2
  155. data/src/core/support/sync_win32.c +10 -5
  156. data/src/core/support/time.c +29 -29
  157. data/src/core/support/time_posix.c +15 -6
  158. data/src/core/support/time_precise.c +2 -2
  159. data/src/core/support/time_win32.c +18 -9
  160. data/src/core/support/tls_pthread.c +1 -1
  161. data/src/core/support/wrap_memcpy.c +53 -0
  162. data/src/core/surface/alarm.c +83 -0
  163. data/src/core/surface/byte_buffer_reader.c +1 -1
  164. data/src/core/surface/call.c +78 -69
  165. data/src/core/surface/call.h +2 -2
  166. data/src/core/surface/call_test_only.h +2 -2
  167. data/src/core/surface/channel.c +9 -9
  168. data/src/core/surface/channel.h +1 -1
  169. data/src/core/surface/channel_connectivity.c +3 -3
  170. data/src/core/surface/channel_create.c +3 -3
  171. data/src/core/surface/channel_ping.c +2 -2
  172. data/src/core/surface/completion_queue.c +11 -12
  173. data/src/core/surface/completion_queue.h +1 -1
  174. data/src/core/surface/init.c +7 -5
  175. data/src/core/surface/lame_client.c +3 -3
  176. data/src/core/surface/secure_channel_create.c +3 -3
  177. data/src/core/surface/server.c +28 -28
  178. data/src/core/surface/server_chttp2.c +8 -8
  179. data/src/core/surface/server_create.c +1 -4
  180. data/src/core/surface/validate_metadata.c +3 -3
  181. data/src/core/surface/version.c +2 -2
  182. data/src/core/transport/byte_stream.c +8 -6
  183. data/src/core/transport/byte_stream.h +6 -5
  184. data/src/core/transport/chttp2/bin_encoder.c +29 -29
  185. data/src/core/transport/chttp2/frame_data.c +29 -26
  186. data/src/core/transport/chttp2/frame_data.h +6 -6
  187. data/src/core/transport/chttp2/frame_goaway.c +30 -30
  188. data/src/core/transport/chttp2/frame_goaway.h +6 -6
  189. data/src/core/transport/chttp2/frame_ping.c +6 -6
  190. data/src/core/transport/chttp2/frame_ping.h +5 -5
  191. data/src/core/transport/chttp2/frame_rst_stream.c +18 -19
  192. data/src/core/transport/chttp2/frame_rst_stream.h +4 -4
  193. data/src/core/transport/chttp2/frame_settings.c +30 -30
  194. data/src/core/transport/chttp2/frame_settings.h +13 -13
  195. data/src/core/transport/chttp2/frame_window_update.c +17 -18
  196. data/src/core/transport/chttp2/frame_window_update.h +5 -7
  197. data/src/core/transport/chttp2/hpack_encoder.c +69 -73
  198. data/src/core/transport/chttp2/hpack_encoder.h +16 -16
  199. data/src/core/transport/chttp2/hpack_parser.c +167 -167
  200. data/src/core/transport/chttp2/hpack_parser.h +16 -16
  201. data/src/core/transport/chttp2/hpack_table.c +13 -13
  202. data/src/core/transport/chttp2/hpack_table.h +11 -11
  203. data/src/core/transport/chttp2/internal.h +97 -86
  204. data/src/core/transport/chttp2/parsing.c +25 -25
  205. data/src/core/transport/chttp2/stream_lists.c +26 -3
  206. data/src/core/transport/chttp2/stream_map.c +13 -14
  207. data/src/core/transport/chttp2/stream_map.h +6 -7
  208. data/src/core/transport/chttp2/timeout_encoding.c +19 -16
  209. data/src/core/transport/chttp2/varint.c +8 -9
  210. data/src/core/transport/chttp2/varint.h +7 -8
  211. data/src/core/transport/chttp2/writing.c +26 -23
  212. data/src/core/transport/chttp2_transport.c +133 -92
  213. data/src/core/transport/connectivity_state.c +6 -6
  214. data/src/core/transport/metadata.c +18 -18
  215. data/src/core/transport/metadata.h +5 -5
  216. data/src/core/transport/static_metadata.c +15 -16
  217. data/src/core/transport/static_metadata.h +5 -5
  218. data/src/core/transport/transport.c +5 -5
  219. data/src/core/transport/transport.h +14 -1
  220. data/src/core/tsi/fake_transport_security.c +7 -7
  221. data/src/core/tsi/ssl_transport_security.c +6 -4
  222. data/src/core/tsi/ssl_types.h +55 -0
  223. data/src/ruby/ext/grpc/extconf.rb +51 -14
  224. data/src/ruby/ext/grpc/rb_byte_buffer.c +3 -1
  225. data/src/ruby/ext/grpc/rb_call.c +6 -3
  226. data/src/ruby/ext/grpc/rb_call_credentials.c +4 -0
  227. data/src/ruby/ext/grpc/rb_channel.c +4 -2
  228. data/src/ruby/ext/grpc/rb_channel_args.c +3 -1
  229. data/src/ruby/ext/grpc/rb_channel_credentials.c +3 -1
  230. data/src/ruby/ext/grpc/rb_completion_queue.c +3 -1
  231. data/src/ruby/ext/grpc/rb_event_thread.c +5 -0
  232. data/src/ruby/ext/grpc/rb_grpc.c +11 -3
  233. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +560 -0
  234. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +843 -0
  235. data/src/ruby/ext/grpc/rb_loader.c +72 -0
  236. data/src/ruby/ext/grpc/rb_loader.h +40 -0
  237. data/src/ruby/ext/grpc/rb_server.c +3 -1
  238. data/src/ruby/ext/grpc/rb_server_credentials.c +4 -2
  239. data/src/ruby/lib/grpc/generic/bidi_call.rb +1 -1
  240. data/src/ruby/lib/grpc/generic/rpc_desc.rb +1 -1
  241. data/src/ruby/lib/grpc/generic/rpc_server.rb +1 -1
  242. data/src/ruby/lib/grpc/grpc.rb +34 -0
  243. data/src/ruby/lib/grpc/version.rb +1 -1
  244. data/src/ruby/spec/pb/health/checker_spec.rb +1 -1
  245. data/third_party/boringssl/crypto/aes/aes.c +1142 -0
  246. data/third_party/boringssl/crypto/aes/internal.h +87 -0
  247. data/third_party/boringssl/crypto/aes/mode_wrappers.c +108 -0
  248. data/third_party/boringssl/crypto/asn1/a_bitstr.c +255 -0
  249. data/third_party/boringssl/crypto/asn1/a_bool.c +112 -0
  250. data/third_party/boringssl/crypto/asn1/a_bytes.c +317 -0
  251. data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +286 -0
  252. data/third_party/boringssl/crypto/asn1/a_dup.c +103 -0
  253. data/third_party/boringssl/crypto/asn1/a_enum.c +183 -0
  254. data/third_party/boringssl/crypto/asn1/a_gentm.c +255 -0
  255. data/third_party/boringssl/crypto/asn1/a_i2d_fp.c +154 -0
  256. data/third_party/boringssl/crypto/asn1/a_int.c +456 -0
  257. data/third_party/boringssl/crypto/asn1/a_mbstr.c +390 -0
  258. data/third_party/boringssl/crypto/asn1/a_object.c +412 -0
  259. data/third_party/boringssl/crypto/asn1/a_octet.c +70 -0
  260. data/third_party/boringssl/crypto/asn1/a_print.c +119 -0
  261. data/third_party/boringssl/crypto/asn1/a_strnid.c +286 -0
  262. data/third_party/boringssl/crypto/asn1/a_time.c +221 -0
  263. data/third_party/boringssl/crypto/asn1/a_type.c +160 -0
  264. data/third_party/boringssl/crypto/asn1/a_utctm.c +342 -0
  265. data/third_party/boringssl/crypto/asn1/a_utf8.c +210 -0
  266. data/third_party/boringssl/crypto/asn1/asn1_lib.c +510 -0
  267. data/third_party/boringssl/crypto/asn1/asn1_locl.h +73 -0
  268. data/third_party/boringssl/crypto/asn1/asn1_par.c +444 -0
  269. data/third_party/boringssl/crypto/asn1/asn_pack.c +104 -0
  270. data/third_party/boringssl/crypto/asn1/bio_asn1.c +496 -0
  271. data/third_party/boringssl/crypto/asn1/bio_ndef.c +254 -0
  272. data/third_party/boringssl/crypto/asn1/f_enum.c +206 -0
  273. data/third_party/boringssl/crypto/asn1/f_int.c +210 -0
  274. data/third_party/boringssl/crypto/asn1/f_string.c +204 -0
  275. data/third_party/boringssl/crypto/asn1/t_bitst.c +102 -0
  276. data/third_party/boringssl/crypto/asn1/t_pkey.c +112 -0
  277. data/third_party/boringssl/crypto/asn1/tasn_dec.c +1342 -0
  278. data/third_party/boringssl/crypto/asn1/tasn_enc.c +695 -0
  279. data/third_party/boringssl/crypto/asn1/tasn_fre.c +264 -0
  280. data/third_party/boringssl/crypto/asn1/tasn_new.c +398 -0
  281. data/third_party/boringssl/crypto/asn1/tasn_prn.c +642 -0
  282. data/third_party/boringssl/crypto/asn1/tasn_typ.c +137 -0
  283. data/third_party/boringssl/crypto/asn1/tasn_utl.c +266 -0
  284. data/third_party/boringssl/crypto/asn1/x_bignum.c +143 -0
  285. data/third_party/boringssl/crypto/asn1/x_long.c +182 -0
  286. data/third_party/boringssl/crypto/base64/base64.c +478 -0
  287. data/third_party/boringssl/crypto/bio/bio.c +608 -0
  288. data/third_party/boringssl/crypto/bio/bio_mem.c +327 -0
  289. data/third_party/boringssl/crypto/bio/buffer.c +496 -0
  290. data/third_party/boringssl/crypto/bio/connect.c +544 -0
  291. data/third_party/boringssl/crypto/bio/fd.c +270 -0
  292. data/third_party/boringssl/crypto/bio/file.c +349 -0
  293. data/third_party/boringssl/crypto/bio/hexdump.c +192 -0
  294. data/third_party/boringssl/crypto/bio/internal.h +108 -0
  295. data/third_party/boringssl/crypto/bio/pair.c +803 -0
  296. data/third_party/boringssl/crypto/bio/printf.c +119 -0
  297. data/third_party/boringssl/crypto/bio/socket.c +195 -0
  298. data/third_party/boringssl/crypto/bio/socket_helper.c +113 -0
  299. data/third_party/boringssl/crypto/bn/add.c +377 -0
  300. data/third_party/boringssl/crypto/bn/asm/x86_64-gcc.c +599 -0
  301. data/third_party/boringssl/crypto/bn/bn.c +341 -0
  302. data/third_party/boringssl/crypto/bn/bn_asn1.c +93 -0
  303. data/third_party/boringssl/crypto/bn/cmp.c +200 -0
  304. data/third_party/boringssl/crypto/bn/convert.c +597 -0
  305. data/third_party/boringssl/crypto/bn/ctx.c +311 -0
  306. data/third_party/boringssl/crypto/bn/div.c +625 -0
  307. data/third_party/boringssl/crypto/bn/exponentiation.c +1544 -0
  308. data/third_party/boringssl/crypto/bn/gcd.c +711 -0
  309. data/third_party/boringssl/crypto/bn/generic.c +1019 -0
  310. data/third_party/boringssl/crypto/bn/internal.h +294 -0
  311. data/third_party/boringssl/crypto/bn/kronecker.c +175 -0
  312. data/third_party/boringssl/crypto/bn/montgomery.c +561 -0
  313. data/third_party/boringssl/crypto/bn/mul.c +888 -0
  314. data/third_party/boringssl/crypto/bn/prime.c +845 -0
  315. data/third_party/boringssl/crypto/bn/random.c +326 -0
  316. data/third_party/boringssl/crypto/bn/rsaz_exp.c +326 -0
  317. data/third_party/boringssl/crypto/bn/rsaz_exp.h +56 -0
  318. data/third_party/boringssl/crypto/bn/shift.c +299 -0
  319. data/third_party/boringssl/crypto/bn/sqrt.c +505 -0
  320. data/third_party/boringssl/crypto/buf/buf.c +235 -0
  321. data/third_party/boringssl/crypto/bytestring/ber.c +221 -0
  322. data/third_party/boringssl/crypto/bytestring/cbb.c +411 -0
  323. data/third_party/boringssl/crypto/bytestring/cbs.c +415 -0
  324. data/third_party/boringssl/crypto/bytestring/internal.h +46 -0
  325. data/third_party/boringssl/crypto/chacha/chacha_generic.c +140 -0
  326. data/third_party/boringssl/crypto/chacha/chacha_vec.c +323 -0
  327. data/third_party/boringssl/crypto/cipher/aead.c +167 -0
  328. data/third_party/boringssl/crypto/cipher/cipher.c +652 -0
  329. data/third_party/boringssl/crypto/cipher/derive_key.c +154 -0
  330. data/third_party/boringssl/crypto/cipher/e_aes.c +1767 -0
  331. data/third_party/boringssl/crypto/cipher/e_chacha20poly1305.c +311 -0
  332. data/third_party/boringssl/crypto/cipher/e_des.c +207 -0
  333. data/third_party/boringssl/crypto/cipher/e_null.c +85 -0
  334. data/third_party/boringssl/crypto/cipher/e_rc2.c +443 -0
  335. data/third_party/boringssl/crypto/cipher/e_rc4.c +87 -0
  336. data/third_party/boringssl/crypto/cipher/e_ssl3.c +463 -0
  337. data/third_party/boringssl/crypto/cipher/e_tls.c +673 -0
  338. data/third_party/boringssl/crypto/cipher/internal.h +164 -0
  339. data/third_party/boringssl/crypto/cipher/tls_cbc.c +495 -0
  340. data/third_party/boringssl/crypto/cmac/cmac.c +239 -0
  341. data/third_party/boringssl/crypto/conf/conf.c +778 -0
  342. data/third_party/boringssl/crypto/conf/conf_def.h +127 -0
  343. data/third_party/boringssl/crypto/conf/internal.h +31 -0
  344. data/third_party/boringssl/crypto/cpu-arm.c +199 -0
  345. data/third_party/boringssl/crypto/cpu-intel.c +261 -0
  346. data/third_party/boringssl/crypto/crypto.c +140 -0
  347. data/third_party/boringssl/crypto/curve25519/curve25519.c +4897 -0
  348. data/third_party/boringssl/crypto/des/des.c +771 -0
  349. data/third_party/boringssl/crypto/des/internal.h +212 -0
  350. data/third_party/boringssl/crypto/dh/check.c +180 -0
  351. data/third_party/boringssl/crypto/dh/dh.c +463 -0
  352. data/third_party/boringssl/crypto/dh/dh_asn1.c +84 -0
  353. data/third_party/boringssl/crypto/dh/internal.h +80 -0
  354. data/third_party/boringssl/crypto/dh/params.c +301 -0
  355. data/third_party/boringssl/crypto/digest/digest.c +248 -0
  356. data/third_party/boringssl/crypto/digest/digests.c +321 -0
  357. data/third_party/boringssl/crypto/digest/internal.h +112 -0
  358. data/third_party/boringssl/crypto/digest/md32_common.h +322 -0
  359. data/third_party/boringssl/crypto/directory.h +66 -0
  360. data/third_party/boringssl/crypto/directory_posix.c +108 -0
  361. data/third_party/boringssl/crypto/directory_win.c +144 -0
  362. data/third_party/boringssl/crypto/dsa/dsa.c +908 -0
  363. data/third_party/boringssl/crypto/dsa/dsa_asn1.c +150 -0
  364. data/third_party/boringssl/crypto/dsa/internal.h +78 -0
  365. data/third_party/boringssl/crypto/ec/ec.c +889 -0
  366. data/third_party/boringssl/crypto/ec/ec_asn1.c +586 -0
  367. data/third_party/boringssl/crypto/ec/ec_key.c +482 -0
  368. data/third_party/boringssl/crypto/ec/ec_montgomery.c +280 -0
  369. data/third_party/boringssl/crypto/ec/internal.h +318 -0
  370. data/third_party/boringssl/crypto/ec/oct.c +416 -0
  371. data/third_party/boringssl/crypto/ec/p224-64.c +1305 -0
  372. data/third_party/boringssl/crypto/ec/p256-64.c +1878 -0
  373. data/third_party/boringssl/crypto/ec/p256-x86_64-table.h +9548 -0
  374. data/third_party/boringssl/crypto/ec/p256-x86_64.c +596 -0
  375. data/third_party/boringssl/crypto/ec/simple.c +1313 -0
  376. data/third_party/boringssl/crypto/ec/util-64.c +183 -0
  377. data/third_party/boringssl/crypto/ec/wnaf.c +449 -0
  378. data/third_party/boringssl/crypto/ecdh/ecdh.c +153 -0
  379. data/third_party/boringssl/crypto/ecdsa/ecdsa.c +496 -0
  380. data/third_party/boringssl/crypto/ecdsa/ecdsa_asn1.c +240 -0
  381. data/third_party/boringssl/crypto/engine/engine.c +96 -0
  382. data/third_party/boringssl/crypto/err/err.c +756 -0
  383. data/third_party/boringssl/crypto/evp/algorithm.c +153 -0
  384. data/third_party/boringssl/crypto/evp/digestsign.c +159 -0
  385. data/third_party/boringssl/crypto/evp/evp.c +411 -0
  386. data/third_party/boringssl/crypto/evp/evp_asn1.c +179 -0
  387. data/third_party/boringssl/crypto/evp/evp_ctx.c +477 -0
  388. data/third_party/boringssl/crypto/evp/internal.h +278 -0
  389. data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +588 -0
  390. data/third_party/boringssl/crypto/evp/p_ec.c +283 -0
  391. data/third_party/boringssl/crypto/evp/p_ec_asn1.c +562 -0
  392. data/third_party/boringssl/crypto/evp/p_rsa.c +596 -0
  393. data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +737 -0
  394. data/third_party/boringssl/crypto/evp/pbkdf.c +151 -0
  395. data/third_party/boringssl/crypto/evp/sign.c +151 -0
  396. data/third_party/boringssl/crypto/ex_data.c +294 -0
  397. data/third_party/boringssl/crypto/hkdf/hkdf.c +89 -0
  398. data/third_party/boringssl/crypto/hmac/hmac.c +213 -0
  399. data/third_party/boringssl/crypto/internal.h +532 -0
  400. data/third_party/boringssl/crypto/lhash/lhash.c +346 -0
  401. data/third_party/boringssl/crypto/md4/md4.c +225 -0
  402. data/third_party/boringssl/crypto/md5/md5.c +275 -0
  403. data/third_party/boringssl/crypto/mem.c +200 -0
  404. data/third_party/boringssl/crypto/modes/cbc.c +216 -0
  405. data/third_party/boringssl/crypto/modes/cfb.c +231 -0
  406. data/third_party/boringssl/crypto/modes/ctr.c +226 -0
  407. data/third_party/boringssl/crypto/modes/gcm.c +1252 -0
  408. data/third_party/boringssl/crypto/modes/internal.h +370 -0
  409. data/third_party/boringssl/crypto/modes/ofb.c +108 -0
  410. data/third_party/boringssl/crypto/obj/obj.c +664 -0
  411. data/third_party/boringssl/crypto/obj/obj_dat.h +5257 -0
  412. data/third_party/boringssl/crypto/obj/obj_xref.c +124 -0
  413. data/third_party/boringssl/crypto/obj/obj_xref.h +96 -0
  414. data/third_party/boringssl/crypto/pem/pem_all.c +281 -0
  415. data/third_party/boringssl/crypto/pem/pem_info.c +404 -0
  416. data/third_party/boringssl/crypto/pem/pem_lib.c +835 -0
  417. data/third_party/boringssl/crypto/pem/pem_oth.c +89 -0
  418. data/third_party/boringssl/crypto/pem/pem_pk8.c +244 -0
  419. data/third_party/boringssl/crypto/pem/pem_pkey.c +312 -0
  420. data/third_party/boringssl/crypto/pem/pem_x509.c +65 -0
  421. data/third_party/boringssl/crypto/pem/pem_xaux.c +66 -0
  422. data/third_party/boringssl/crypto/pkcs8/internal.h +83 -0
  423. data/third_party/boringssl/crypto/pkcs8/p5_pbe.c +150 -0
  424. data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +440 -0
  425. data/third_party/boringssl/crypto/pkcs8/p8_pkey.c +85 -0
  426. data/third_party/boringssl/crypto/pkcs8/pkcs8.c +1217 -0
  427. data/third_party/boringssl/crypto/poly1305/poly1305.c +331 -0
  428. data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +301 -0
  429. data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +892 -0
  430. data/third_party/boringssl/crypto/rand/internal.h +32 -0
  431. data/third_party/boringssl/crypto/rand/rand.c +239 -0
  432. data/third_party/boringssl/crypto/rand/urandom.c +223 -0
  433. data/third_party/boringssl/crypto/rand/windows.c +56 -0
  434. data/third_party/boringssl/crypto/rc4/rc4.c +283 -0
  435. data/third_party/boringssl/crypto/refcount_c11.c +67 -0
  436. data/third_party/boringssl/crypto/refcount_lock.c +53 -0
  437. data/third_party/boringssl/crypto/rsa/blinding.c +462 -0
  438. data/third_party/boringssl/crypto/rsa/internal.h +164 -0
  439. data/third_party/boringssl/crypto/rsa/padding.c +711 -0
  440. data/third_party/boringssl/crypto/rsa/rsa.c +808 -0
  441. data/third_party/boringssl/crypto/rsa/rsa_asn1.c +473 -0
  442. data/third_party/boringssl/crypto/rsa/rsa_impl.c +1138 -0
  443. data/third_party/boringssl/crypto/sha/sha1.c +337 -0
  444. data/third_party/boringssl/crypto/sha/sha256.c +327 -0
  445. data/third_party/boringssl/crypto/sha/sha512.c +607 -0
  446. data/third_party/boringssl/crypto/stack/stack.c +386 -0
  447. data/third_party/boringssl/crypto/test/scoped_types.h +137 -0
  448. data/third_party/boringssl/crypto/test/test_util.h +35 -0
  449. data/third_party/boringssl/crypto/thread.c +101 -0
  450. data/third_party/boringssl/crypto/thread_none.c +55 -0
  451. data/third_party/boringssl/crypto/thread_pthread.c +167 -0
  452. data/third_party/boringssl/crypto/thread_win.c +282 -0
  453. data/third_party/boringssl/crypto/time_support.c +212 -0
  454. data/third_party/boringssl/crypto/x509/a_digest.c +97 -0
  455. data/third_party/boringssl/crypto/x509/a_sign.c +136 -0
  456. data/third_party/boringssl/crypto/x509/a_strex.c +564 -0
  457. data/third_party/boringssl/crypto/x509/a_verify.c +133 -0
  458. data/third_party/boringssl/crypto/x509/asn1_gen.c +873 -0
  459. data/third_party/boringssl/crypto/x509/by_dir.c +491 -0
  460. data/third_party/boringssl/crypto/x509/by_file.c +295 -0
  461. data/third_party/boringssl/crypto/x509/charmap.h +15 -0
  462. data/third_party/boringssl/crypto/x509/i2d_pr.c +84 -0
  463. data/third_party/boringssl/crypto/x509/pkcs7.c +353 -0
  464. data/third_party/boringssl/crypto/x509/t_crl.c +129 -0
  465. data/third_party/boringssl/crypto/x509/t_req.c +246 -0
  466. data/third_party/boringssl/crypto/x509/t_x509.c +500 -0
  467. data/third_party/boringssl/crypto/x509/t_x509a.c +109 -0
  468. data/third_party/boringssl/crypto/x509/vpm_int.h +70 -0
  469. data/third_party/boringssl/crypto/x509/x509.c +152 -0
  470. data/third_party/boringssl/crypto/x509/x509_att.c +353 -0
  471. data/third_party/boringssl/crypto/x509/x509_cmp.c +490 -0
  472. data/third_party/boringssl/crypto/x509/x509_d2.c +105 -0
  473. data/third_party/boringssl/crypto/x509/x509_def.c +88 -0
  474. data/third_party/boringssl/crypto/x509/x509_ext.c +206 -0
  475. data/third_party/boringssl/crypto/x509/x509_lu.c +738 -0
  476. data/third_party/boringssl/crypto/x509/x509_obj.c +191 -0
  477. data/third_party/boringssl/crypto/x509/x509_r2x.c +113 -0
  478. data/third_party/boringssl/crypto/x509/x509_req.c +315 -0
  479. data/third_party/boringssl/crypto/x509/x509_set.c +154 -0
  480. data/third_party/boringssl/crypto/x509/x509_trs.c +304 -0
  481. data/third_party/boringssl/crypto/x509/x509_txt.c +209 -0
  482. data/third_party/boringssl/crypto/x509/x509_v3.c +271 -0
  483. data/third_party/boringssl/crypto/x509/x509_vfy.c +2456 -0
  484. data/third_party/boringssl/crypto/x509/x509_vpm.c +672 -0
  485. data/third_party/boringssl/crypto/x509/x509cset.c +172 -0
  486. data/third_party/boringssl/crypto/x509/x509name.c +381 -0
  487. data/third_party/boringssl/crypto/x509/x509rset.c +80 -0
  488. data/third_party/boringssl/crypto/x509/x509spki.c +135 -0
  489. data/third_party/boringssl/crypto/x509/x509type.c +128 -0
  490. data/third_party/boringssl/crypto/x509/x_algor.c +154 -0
  491. data/third_party/boringssl/crypto/x509/x_all.c +547 -0
  492. data/third_party/boringssl/crypto/x509/x_attrib.c +117 -0
  493. data/third_party/boringssl/crypto/x509/x_crl.c +560 -0
  494. data/third_party/boringssl/crypto/x509/x_exten.c +75 -0
  495. data/third_party/boringssl/crypto/x509/x_info.c +95 -0
  496. data/third_party/boringssl/crypto/x509/x_name.c +538 -0
  497. data/third_party/boringssl/crypto/x509/x_pkey.c +100 -0
  498. data/third_party/boringssl/crypto/x509/x_pubkey.c +384 -0
  499. data/third_party/boringssl/crypto/x509/x_req.c +112 -0
  500. data/third_party/boringssl/crypto/x509/x_sig.c +69 -0
  501. data/third_party/boringssl/crypto/x509/x_spki.c +78 -0
  502. data/third_party/boringssl/crypto/x509/x_val.c +69 -0
  503. data/third_party/boringssl/crypto/x509/x_x509.c +227 -0
  504. data/third_party/boringssl/crypto/x509/x_x509a.c +197 -0
  505. data/third_party/boringssl/crypto/x509v3/ext_dat.h +129 -0
  506. data/third_party/boringssl/crypto/x509v3/pcy_cache.c +299 -0
  507. data/third_party/boringssl/crypto/x509v3/pcy_data.c +137 -0
  508. data/third_party/boringssl/crypto/x509v3/pcy_int.h +212 -0
  509. data/third_party/boringssl/crypto/x509v3/pcy_lib.c +165 -0
  510. data/third_party/boringssl/crypto/x509v3/pcy_map.c +133 -0
  511. data/third_party/boringssl/crypto/x509v3/pcy_node.c +197 -0
  512. data/third_party/boringssl/crypto/x509v3/pcy_tree.c +876 -0
  513. data/third_party/boringssl/crypto/x509v3/v3_akey.c +212 -0
  514. data/third_party/boringssl/crypto/x509v3/v3_akeya.c +71 -0
  515. data/third_party/boringssl/crypto/x509v3/v3_alt.c +622 -0
  516. data/third_party/boringssl/crypto/x509v3/v3_bcons.c +126 -0
  517. data/third_party/boringssl/crypto/x509v3/v3_bitst.c +141 -0
  518. data/third_party/boringssl/crypto/x509v3/v3_conf.c +459 -0
  519. data/third_party/boringssl/crypto/x509v3/v3_cpols.c +475 -0
  520. data/third_party/boringssl/crypto/x509v3/v3_crld.c +616 -0
  521. data/third_party/boringssl/crypto/x509v3/v3_enum.c +98 -0
  522. data/third_party/boringssl/crypto/x509v3/v3_extku.c +145 -0
  523. data/third_party/boringssl/crypto/x509v3/v3_genn.c +252 -0
  524. data/third_party/boringssl/crypto/x509v3/v3_ia5.c +117 -0
  525. data/third_party/boringssl/crypto/x509v3/v3_info.c +200 -0
  526. data/third_party/boringssl/crypto/x509v3/v3_int.c +87 -0
  527. data/third_party/boringssl/crypto/x509v3/v3_lib.c +335 -0
  528. data/third_party/boringssl/crypto/x509v3/v3_ncons.c +510 -0
  529. data/third_party/boringssl/crypto/x509v3/v3_pci.c +335 -0
  530. data/third_party/boringssl/crypto/x509v3/v3_pcia.c +56 -0
  531. data/third_party/boringssl/crypto/x509v3/v3_pcons.c +142 -0
  532. data/third_party/boringssl/crypto/x509v3/v3_pku.c +109 -0
  533. data/third_party/boringssl/crypto/x509v3/v3_pmaps.c +156 -0
  534. data/third_party/boringssl/crypto/x509v3/v3_prn.c +207 -0
  535. data/third_party/boringssl/crypto/x509v3/v3_purp.c +805 -0
  536. data/third_party/boringssl/crypto/x509v3/v3_skey.c +148 -0
  537. data/third_party/boringssl/crypto/x509v3/v3_sxnet.c +266 -0
  538. data/third_party/boringssl/crypto/x509v3/v3_utl.c +1322 -0
  539. data/third_party/boringssl/include/openssl/aead.h +346 -0
  540. data/third_party/boringssl/include/openssl/aes.h +158 -0
  541. data/third_party/boringssl/include/openssl/arm_arch.h +127 -0
  542. data/third_party/boringssl/include/openssl/asn1.h +1168 -0
  543. data/third_party/boringssl/include/openssl/asn1_mac.h +75 -0
  544. data/third_party/boringssl/include/openssl/asn1t.h +906 -0
  545. data/third_party/boringssl/include/openssl/base.h +261 -0
  546. data/third_party/boringssl/include/openssl/base64.h +184 -0
  547. data/third_party/boringssl/include/openssl/bio.h +902 -0
  548. data/third_party/boringssl/include/openssl/blowfish.h +93 -0
  549. data/third_party/boringssl/include/openssl/bn.h +885 -0
  550. data/third_party/boringssl/include/openssl/buf.h +118 -0
  551. data/third_party/boringssl/include/openssl/buffer.h +18 -0
  552. data/third_party/boringssl/include/openssl/bytestring.h +360 -0
  553. data/third_party/boringssl/include/openssl/cast.h +96 -0
  554. data/third_party/boringssl/include/openssl/chacha.h +37 -0
  555. data/third_party/boringssl/include/openssl/cipher.h +571 -0
  556. data/third_party/boringssl/include/openssl/cmac.h +76 -0
  557. data/third_party/boringssl/include/openssl/conf.h +145 -0
  558. data/third_party/boringssl/include/openssl/cpu.h +184 -0
  559. data/third_party/boringssl/include/openssl/crypto.h +68 -0
  560. data/third_party/boringssl/include/openssl/curve25519.h +88 -0
  561. data/third_party/boringssl/include/openssl/des.h +177 -0
  562. data/third_party/boringssl/include/openssl/dh.h +238 -0
  563. data/third_party/boringssl/include/openssl/digest.h +258 -0
  564. data/third_party/boringssl/include/openssl/dsa.h +343 -0
  565. data/third_party/boringssl/include/openssl/dtls1.h +16 -0
  566. data/third_party/boringssl/include/openssl/ec.h +355 -0
  567. data/third_party/boringssl/include/openssl/ec_key.h +280 -0
  568. data/third_party/boringssl/include/openssl/ecdh.h +102 -0
  569. data/third_party/boringssl/include/openssl/ecdsa.h +206 -0
  570. data/third_party/boringssl/include/openssl/engine.h +98 -0
  571. data/third_party/boringssl/include/openssl/err.h +487 -0
  572. data/third_party/boringssl/include/openssl/evp.h +750 -0
  573. data/third_party/boringssl/include/openssl/ex_data.h +213 -0
  574. data/third_party/boringssl/include/openssl/hkdf.h +44 -0
  575. data/third_party/boringssl/include/openssl/hmac.h +160 -0
  576. data/third_party/boringssl/include/openssl/lhash.h +192 -0
  577. data/third_party/boringssl/include/openssl/lhash_macros.h +132 -0
  578. data/third_party/boringssl/include/openssl/md4.h +102 -0
  579. data/third_party/boringssl/include/openssl/md5.h +107 -0
  580. data/third_party/boringssl/include/openssl/mem.h +140 -0
  581. data/third_party/boringssl/include/openssl/obj.h +198 -0
  582. data/third_party/boringssl/include/openssl/obj_mac.h +4140 -0
  583. data/third_party/boringssl/include/openssl/objects.h +18 -0
  584. data/third_party/boringssl/include/openssl/opensslfeatures.h +60 -0
  585. data/third_party/boringssl/include/openssl/opensslv.h +18 -0
  586. data/third_party/boringssl/include/openssl/ossl_typ.h +18 -0
  587. data/third_party/boringssl/include/openssl/pem.h +521 -0
  588. data/third_party/boringssl/include/openssl/pkcs12.h +18 -0
  589. data/third_party/boringssl/include/openssl/pkcs7.h +16 -0
  590. data/third_party/boringssl/include/openssl/pkcs8.h +220 -0
  591. data/third_party/boringssl/include/openssl/poly1305.h +51 -0
  592. data/third_party/boringssl/include/openssl/pqueue.h +146 -0
  593. data/third_party/boringssl/include/openssl/rand.h +113 -0
  594. data/third_party/boringssl/include/openssl/rc4.h +90 -0
  595. data/third_party/boringssl/include/openssl/rsa.h +637 -0
  596. data/third_party/boringssl/include/openssl/safestack.h +16 -0
  597. data/third_party/boringssl/include/openssl/sha.h +256 -0
  598. data/third_party/boringssl/include/openssl/srtp.h +18 -0
  599. data/third_party/boringssl/include/openssl/ssl.h +4466 -0
  600. data/third_party/boringssl/include/openssl/ssl3.h +441 -0
  601. data/third_party/boringssl/include/openssl/stack.h +298 -0
  602. data/third_party/boringssl/include/openssl/stack_macros.h +4190 -0
  603. data/third_party/boringssl/include/openssl/thread.h +173 -0
  604. data/third_party/boringssl/include/openssl/time_support.h +90 -0
  605. data/third_party/boringssl/include/openssl/tls1.h +653 -0
  606. data/third_party/boringssl/include/openssl/type_check.h +91 -0
  607. data/third_party/boringssl/include/openssl/x509.h +1258 -0
  608. data/third_party/boringssl/include/openssl/x509_vfy.h +611 -0
  609. data/third_party/boringssl/include/openssl/x509v3.h +798 -0
  610. data/third_party/boringssl/ssl/custom_extensions.c +257 -0
  611. data/third_party/boringssl/ssl/d1_both.c +880 -0
  612. data/third_party/boringssl/ssl/d1_clnt.c +566 -0
  613. data/third_party/boringssl/ssl/d1_lib.c +340 -0
  614. data/third_party/boringssl/ssl/d1_meth.c +130 -0
  615. data/third_party/boringssl/ssl/d1_pkt.c +578 -0
  616. data/third_party/boringssl/ssl/d1_srtp.c +234 -0
  617. data/third_party/boringssl/ssl/d1_srvr.c +485 -0
  618. data/third_party/boringssl/ssl/dtls_record.c +308 -0
  619. data/third_party/boringssl/ssl/internal.h +1276 -0
  620. data/third_party/boringssl/ssl/pqueue/pqueue.c +197 -0
  621. data/third_party/boringssl/ssl/s3_both.c +571 -0
  622. data/third_party/boringssl/ssl/s3_clnt.c +2241 -0
  623. data/third_party/boringssl/ssl/s3_enc.c +494 -0
  624. data/third_party/boringssl/ssl/s3_lib.c +587 -0
  625. data/third_party/boringssl/ssl/s3_meth.c +166 -0
  626. data/third_party/boringssl/ssl/s3_pkt.c +732 -0
  627. data/third_party/boringssl/ssl/s3_srvr.c +2536 -0
  628. data/third_party/boringssl/ssl/ssl_aead_ctx.c +300 -0
  629. data/third_party/boringssl/ssl/ssl_asn1.c +718 -0
  630. data/third_party/boringssl/ssl/ssl_buffer.c +319 -0
  631. data/third_party/boringssl/ssl/ssl_cert.c +539 -0
  632. data/third_party/boringssl/ssl/ssl_cipher.c +2003 -0
  633. data/third_party/boringssl/ssl/ssl_file.c +633 -0
  634. data/third_party/boringssl/ssl/ssl_lib.c +2653 -0
  635. data/third_party/boringssl/ssl/ssl_rsa.c +423 -0
  636. data/third_party/boringssl/ssl/ssl_session.c +764 -0
  637. data/third_party/boringssl/ssl/ssl_stat.c +591 -0
  638. data/third_party/boringssl/ssl/t1_enc.c +708 -0
  639. data/third_party/boringssl/ssl/t1_lib.c +2905 -0
  640. data/third_party/boringssl/ssl/test/async_bio.h +45 -0
  641. data/third_party/boringssl/ssl/test/packeted_bio.h +44 -0
  642. data/third_party/boringssl/ssl/test/scoped_types.h +28 -0
  643. data/third_party/boringssl/ssl/test/test_config.h +108 -0
  644. data/third_party/boringssl/ssl/tls_record.c +342 -0
  645. data/third_party/zlib/adler32.c +179 -0
  646. data/third_party/zlib/compress.c +80 -0
  647. data/third_party/zlib/crc32.c +425 -0
  648. data/third_party/zlib/crc32.h +441 -0
  649. data/third_party/zlib/deflate.c +1967 -0
  650. data/third_party/zlib/deflate.h +346 -0
  651. data/third_party/zlib/gzclose.c +25 -0
  652. data/third_party/zlib/gzguts.h +209 -0
  653. data/third_party/zlib/gzlib.c +634 -0
  654. data/third_party/zlib/gzread.c +594 -0
  655. data/third_party/zlib/gzwrite.c +577 -0
  656. data/third_party/zlib/infback.c +640 -0
  657. data/third_party/zlib/inffast.c +340 -0
  658. data/third_party/zlib/inffast.h +11 -0
  659. data/third_party/zlib/inffixed.h +94 -0
  660. data/third_party/zlib/inflate.c +1512 -0
  661. data/third_party/zlib/inflate.h +122 -0
  662. data/third_party/zlib/inftrees.c +306 -0
  663. data/third_party/zlib/inftrees.h +62 -0
  664. data/third_party/zlib/trees.c +1226 -0
  665. data/third_party/zlib/trees.h +128 -0
  666. data/third_party/zlib/uncompr.c +59 -0
  667. data/third_party/zlib/zconf.h +511 -0
  668. data/third_party/zlib/zlib.h +1768 -0
  669. data/third_party/zlib/zutil.c +324 -0
  670. data/third_party/zlib/zutil.h +253 -0
  671. metadata +492 -25
  672. data/Rakefile +0 -63
  673. data/src/ruby/lib/grpc/grpc.so +0 -0
@@ -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
@@ -122,7 +122,7 @@ int grpc_poll_deadline_to_millis_timeout(gpr_timespec deadline,
122
122
  -- mostly for fd_posix's use. */
123
123
  void grpc_pollset_kick_ext(grpc_pollset *p,
124
124
  grpc_pollset_worker *specific_worker,
125
- gpr_uint32 flags);
125
+ uint32_t flags);
126
126
 
127
127
  /* turn a pollset into a multipoller: platform specific */
128
128
  typedef void (*grpc_platform_become_multipoller_type)(grpc_exec_ctx *exec_ctx,
@@ -139,6 +139,8 @@ void grpc_poll_become_multipoller(grpc_exec_ctx *exec_ctx,
139
139
  * be locked) */
140
140
  int grpc_pollset_has_workers(grpc_pollset *pollset);
141
141
 
142
+ void grpc_remove_fd_from_all_epoll_sets(int fd);
143
+
142
144
  /* override to allow tests to hook poll() usage */
143
145
  typedef int (*grpc_poll_function_type)(struct pollfd *, nfds_t, int);
144
146
  extern grpc_poll_function_type grpc_poll_function;
@@ -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
@@ -81,15 +81,6 @@ static grpc_pollset_worker *pop_front_worker(
81
81
  }
82
82
  }
83
83
 
84
- static void push_back_worker(grpc_pollset_worker *root,
85
- grpc_pollset_worker_link_type type,
86
- grpc_pollset_worker *worker) {
87
- worker->links[type].next = root;
88
- worker->links[type].prev = worker->links[type].next->links[type].prev;
89
- worker->links[type].prev->links[type].next =
90
- worker->links[type].next->links[type].prev = worker;
91
- }
92
-
93
84
  static void push_front_worker(grpc_pollset_worker *root,
94
85
  grpc_pollset_worker_link_type type,
95
86
  grpc_pollset_worker *worker) {
@@ -116,7 +107,7 @@ void grpc_pollset_shutdown(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
116
107
  pollset->shutting_down = 1;
117
108
  grpc_pollset_kick(pollset, GRPC_POLLSET_KICK_BROADCAST);
118
109
  if (!pollset->is_iocp_worker) {
119
- grpc_exec_ctx_enqueue(exec_ctx, closure, 1);
110
+ grpc_exec_ctx_enqueue(exec_ctx, closure, true, NULL);
120
111
  } else {
121
112
  pollset->on_shutdown = closure;
122
113
  }
@@ -174,7 +165,7 @@ void grpc_pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
174
165
  }
175
166
 
176
167
  if (pollset->shutting_down && pollset->on_shutdown != NULL) {
177
- grpc_exec_ctx_enqueue(exec_ctx, pollset->on_shutdown, 1);
168
+ grpc_exec_ctx_enqueue(exec_ctx, pollset->on_shutdown, true, NULL);
178
169
  pollset->on_shutdown = NULL;
179
170
  }
180
171
  goto done;
@@ -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
@@ -152,7 +152,7 @@ done:
152
152
 
153
153
  /* Callback to be passed to grpc_executor to asynch-ify
154
154
  * grpc_blocking_resolve_address */
155
- static void do_request_thread(grpc_exec_ctx *exec_ctx, void *rp, int success) {
155
+ static void do_request_thread(grpc_exec_ctx *exec_ctx, void *rp, bool success) {
156
156
  request *r = rp;
157
157
  grpc_resolved_addresses *resolved =
158
158
  grpc_blocking_resolve_address(r->name, r->default_port);
@@ -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
@@ -135,7 +135,7 @@ done:
135
135
 
136
136
  /* Callback to be passed to grpc_executor to asynch-ify
137
137
  * grpc_blocking_resolve_address */
138
- static void do_request_thread(grpc_exec_ctx *exec_ctx, void *rp, int success) {
138
+ static void do_request_thread(grpc_exec_ctx *exec_ctx, void *rp, bool success) {
139
139
  request *r = rp;
140
140
  grpc_resolved_addresses *resolved =
141
141
  grpc_blocking_resolve_address(r->name, r->default_port);
@@ -48,8 +48,8 @@
48
48
 
49
49
  #include "src/core/support/string.h"
50
50
 
51
- static const gpr_uint8 kV4MappedPrefix[] = {0, 0, 0, 0, 0, 0,
52
- 0, 0, 0, 0, 0xff, 0xff};
51
+ static const uint8_t kV4MappedPrefix[] = {0, 0, 0, 0, 0, 0,
52
+ 0, 0, 0, 0, 0xff, 0xff};
53
53
 
54
54
  int grpc_sockaddr_is_v4mapped(const struct sockaddr *addr,
55
55
  struct sockaddr_in *addr4_out) {
@@ -126,14 +126,14 @@ void grpc_sockaddr_make_wildcard4(int port, struct sockaddr_in *wild_out) {
126
126
  GPR_ASSERT(port >= 0 && port < 65536);
127
127
  memset(wild_out, 0, sizeof(*wild_out));
128
128
  wild_out->sin_family = AF_INET;
129
- wild_out->sin_port = htons((gpr_uint16)port);
129
+ wild_out->sin_port = htons((uint16_t)port);
130
130
  }
131
131
 
132
132
  void grpc_sockaddr_make_wildcard6(int port, struct sockaddr_in6 *wild_out) {
133
133
  GPR_ASSERT(port >= 0 && port < 65536);
134
134
  memset(wild_out, 0, sizeof(*wild_out));
135
135
  wild_out->sin6_family = AF_INET6;
136
- wild_out->sin6_port = htons((gpr_uint16)port);
136
+ wild_out->sin6_port = htons((uint16_t)port);
137
137
  }
138
138
 
139
139
  int grpc_sockaddr_to_string(char **out, const struct sockaddr *addr,
@@ -220,11 +220,11 @@ int grpc_sockaddr_set_port(const struct sockaddr *addr, int port) {
220
220
  switch (addr->sa_family) {
221
221
  case AF_INET:
222
222
  GPR_ASSERT(port >= 0 && port < 65536);
223
- ((struct sockaddr_in *)addr)->sin_port = htons((gpr_uint16)port);
223
+ ((struct sockaddr_in *)addr)->sin_port = htons((uint16_t)port);
224
224
  return 1;
225
225
  case AF_INET6:
226
226
  GPR_ASSERT(port >= 0 && port < 65536);
227
- ((struct sockaddr_in6 *)addr)->sin6_port = htons((gpr_uint16)port);
227
+ ((struct sockaddr_in6 *)addr)->sin6_port = htons((uint16_t)port);
228
228
  return 1;
229
229
  default:
230
230
  gpr_log(GPR_ERROR, "Unknown socket family %d in grpc_sockaddr_set_port",
@@ -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
@@ -38,9 +38,4 @@
38
38
  #include <ws2tcpip.h>
39
39
  #include <mswsock.h>
40
40
 
41
- #ifdef __MINGW32__
42
- /* mingw seems to be missing that definition. */
43
- const char *inet_ntop(int af, const void *src, char *dst, socklen_t size);
44
- #endif
45
-
46
41
  #endif /* GRPC_INTERNAL_CORE_IOMGR_SOCKADDR_WIN32_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
@@ -91,7 +91,7 @@ error:
91
91
  return 0;
92
92
  }
93
93
 
94
- static void tc_on_alarm(grpc_exec_ctx *exec_ctx, void *acp, int success) {
94
+ static void tc_on_alarm(grpc_exec_ctx *exec_ctx, void *acp, bool success) {
95
95
  int done;
96
96
  async_connect *ac = acp;
97
97
  if (grpc_tcp_trace) {
@@ -111,7 +111,7 @@ static void tc_on_alarm(grpc_exec_ctx *exec_ctx, void *acp, int success) {
111
111
  }
112
112
  }
113
113
 
114
- static void on_writable(grpc_exec_ctx *exec_ctx, void *acp, int success) {
114
+ static void on_writable(grpc_exec_ctx *exec_ctx, void *acp, bool success) {
115
115
  async_connect *ac = acp;
116
116
  int so_error = 0;
117
117
  socklen_t so_error_size;
@@ -206,7 +206,7 @@ finish:
206
206
  gpr_free(ac->addr_str);
207
207
  gpr_free(ac);
208
208
  }
209
- grpc_exec_ctx_enqueue(exec_ctx, closure, *ep != NULL);
209
+ grpc_exec_ctx_enqueue(exec_ctx, closure, *ep != NULL, NULL);
210
210
  }
211
211
 
212
212
  void grpc_tcp_client_connect(grpc_exec_ctx *exec_ctx, grpc_closure *closure,
@@ -243,7 +243,7 @@ void grpc_tcp_client_connect(grpc_exec_ctx *exec_ctx, grpc_closure *closure,
243
243
  addr_len = sizeof(addr4_copy);
244
244
  }
245
245
  if (!prepare_socket(addr, fd)) {
246
- grpc_exec_ctx_enqueue(exec_ctx, closure, 0);
246
+ grpc_exec_ctx_enqueue(exec_ctx, closure, false, NULL);
247
247
  return;
248
248
  }
249
249
 
@@ -259,14 +259,14 @@ void grpc_tcp_client_connect(grpc_exec_ctx *exec_ctx, grpc_closure *closure,
259
259
 
260
260
  if (err >= 0) {
261
261
  *ep = grpc_tcp_create(fdobj, GRPC_TCP_DEFAULT_READ_SLICE_SIZE, addr_str);
262
- grpc_exec_ctx_enqueue(exec_ctx, closure, 1);
262
+ grpc_exec_ctx_enqueue(exec_ctx, closure, true, NULL);
263
263
  goto done;
264
264
  }
265
265
 
266
266
  if (errno != EWOULDBLOCK && errno != EINPROGRESS) {
267
267
  gpr_log(GPR_ERROR, "connect error to '%s': %s", addr_str, strerror(errno));
268
268
  grpc_fd_orphan(exec_ctx, fdobj, NULL, NULL, "tcp_client_connect_error");
269
- grpc_exec_ctx_enqueue(exec_ctx, closure, 0);
269
+ grpc_exec_ctx_enqueue(exec_ctx, closure, false, NULL);
270
270
  goto done;
271
271
  }
272
272
 
@@ -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
@@ -74,7 +74,7 @@ static void async_connect_unlock_and_cleanup(async_connect *ac) {
74
74
  }
75
75
  }
76
76
 
77
- static void on_alarm(grpc_exec_ctx *exec_ctx, void *acp, int occured) {
77
+ static void on_alarm(grpc_exec_ctx *exec_ctx, void *acp, bool occured) {
78
78
  async_connect *ac = acp;
79
79
  gpr_mu_lock(&ac->mu);
80
80
  /* If the alarm didn't occur, it got cancelled. */
@@ -84,7 +84,7 @@ static void on_alarm(grpc_exec_ctx *exec_ctx, void *acp, int occured) {
84
84
  async_connect_unlock_and_cleanup(ac);
85
85
  }
86
86
 
87
- static void on_connect(grpc_exec_ctx *exec_ctx, void *acp, int from_iocp) {
87
+ static void on_connect(grpc_exec_ctx *exec_ctx, void *acp, bool from_iocp) {
88
88
  async_connect *ac = acp;
89
89
  SOCKET sock = ac->socket->socket;
90
90
  grpc_endpoint **ep = ac->endpoint;
@@ -215,7 +215,7 @@ failure:
215
215
  } else if (sock != INVALID_SOCKET) {
216
216
  closesocket(sock);
217
217
  }
218
- grpc_exec_ctx_enqueue(exec_ctx, on_done, 0);
218
+ grpc_exec_ctx_enqueue(exec_ctx, on_done, false, NULL);
219
219
  }
220
220
 
221
221
  #endif /* GPR_WINSOCK_SOCKET */
@@ -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
@@ -100,9 +100,9 @@ typedef struct {
100
100
  } grpc_tcp;
101
101
 
102
102
  static void tcp_handle_read(grpc_exec_ctx *exec_ctx, void *arg /* grpc_tcp */,
103
- int success);
103
+ bool success);
104
104
  static void tcp_handle_write(grpc_exec_ctx *exec_ctx, void *arg /* grpc_tcp */,
105
- int success);
105
+ bool success);
106
106
 
107
107
  static void tcp_shutdown(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep) {
108
108
  grpc_tcp *tcp = (grpc_tcp *)ep;
@@ -247,7 +247,7 @@ static void tcp_continue_read(grpc_exec_ctx *exec_ctx, grpc_tcp *tcp) {
247
247
  }
248
248
 
249
249
  static void tcp_handle_read(grpc_exec_ctx *exec_ctx, void *arg /* grpc_tcp */,
250
- int success) {
250
+ bool success) {
251
251
  grpc_tcp *tcp = (grpc_tcp *)arg;
252
252
  GPR_ASSERT(!tcp->finished_edge);
253
253
 
@@ -273,7 +273,7 @@ static void tcp_read(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
273
273
  tcp->finished_edge = 0;
274
274
  grpc_fd_notify_on_read(exec_ctx, tcp->em_fd, &tcp->read_closure);
275
275
  } else {
276
- grpc_exec_ctx_enqueue(exec_ctx, &tcp->read_closure, 1);
276
+ grpc_exec_ctx_enqueue(exec_ctx, &tcp->read_closure, true, NULL);
277
277
  }
278
278
  }
279
279
 
@@ -360,7 +360,7 @@ static flush_result tcp_flush(grpc_tcp *tcp) {
360
360
  }
361
361
 
362
362
  static void tcp_handle_write(grpc_exec_ctx *exec_ctx, void *arg /* grpc_tcp */,
363
- int success) {
363
+ bool success) {
364
364
  grpc_tcp *tcp = (grpc_tcp *)arg;
365
365
  flush_result status;
366
366
  grpc_closure *cb;
@@ -407,7 +407,7 @@ static void tcp_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
407
407
 
408
408
  if (buf->length == 0) {
409
409
  GPR_TIMER_END("tcp_write", 0);
410
- grpc_exec_ctx_enqueue(exec_ctx, cb, 1);
410
+ grpc_exec_ctx_enqueue(exec_ctx, cb, true, NULL);
411
411
  return;
412
412
  }
413
413
  tcp->outgoing_buffer = buf;
@@ -420,7 +420,7 @@ static void tcp_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
420
420
  tcp->write_cb = cb;
421
421
  grpc_fd_notify_on_write(exec_ctx, tcp->em_fd, &tcp->write_closure);
422
422
  } else {
423
- grpc_exec_ctx_enqueue(exec_ctx, cb, status == FLUSH_DONE);
423
+ grpc_exec_ctx_enqueue(exec_ctx, cb, status == FLUSH_DONE, NULL);
424
424
  }
425
425
 
426
426
  GPR_TIMER_END("tcp_write", 0);
@@ -473,6 +473,12 @@ grpc_endpoint *grpc_tcp_create(grpc_fd *em_fd, size_t slice_size,
473
473
  return &tcp->base;
474
474
  }
475
475
 
476
+ int grpc_tcp_fd(grpc_endpoint *ep) {
477
+ grpc_tcp *tcp = (grpc_tcp *)ep;
478
+ GPR_ASSERT(ep->vtable == &vtable);
479
+ return grpc_fd_wrapped_fd(tcp->em_fd);
480
+ }
481
+
476
482
  void grpc_tcp_destroy_and_release_fd(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
477
483
  int *fd, grpc_closure *done) {
478
484
  grpc_tcp *tcp = (grpc_tcp *)ep;
@@ -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