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.
- checksums.yaml +4 -4
- data/Makefile +5707 -22222
- data/include/grpc/byte_buffer.h +2 -83
- data/include/grpc/census.h +191 -121
- data/include/grpc/compression.h +14 -38
- data/include/grpc/grpc.h +88 -434
- data/include/grpc/grpc_security.h +76 -46
- data/include/grpc/grpc_zookeeper.h +1 -1
- data/include/grpc/impl/codegen/alloc.h +74 -0
- data/include/grpc/impl/codegen/atm.h +92 -0
- data/include/grpc/impl/codegen/atm_gcc_atomic.h +72 -0
- data/include/grpc/impl/codegen/atm_gcc_sync.h +87 -0
- data/include/grpc/impl/codegen/atm_win32.h +125 -0
- data/include/grpc/impl/codegen/byte_buffer.h +121 -0
- data/include/grpc/impl/codegen/compression_types.h +73 -0
- data/include/grpc/impl/codegen/connectivity_state.h +59 -0
- data/include/grpc/impl/codegen/grpc_types.h +373 -0
- data/include/grpc/impl/codegen/log.h +110 -0
- data/include/grpc/impl/codegen/port_platform.h +362 -0
- data/include/grpc/impl/codegen/propagation_bits.h +67 -0
- data/include/grpc/impl/codegen/slice.h +182 -0
- data/include/grpc/impl/codegen/slice_buffer.h +105 -0
- data/include/grpc/impl/codegen/status.h +163 -0
- data/include/grpc/impl/codegen/sync.h +316 -0
- data/include/grpc/impl/codegen/sync_generic.h +55 -0
- data/{src/core/census/context.h → include/grpc/impl/codegen/sync_posix.h} +11 -11
- data/include/grpc/impl/codegen/sync_win32.h +49 -0
- data/include/grpc/impl/codegen/time.h +132 -0
- data/include/grpc/status.h +2 -126
- data/include/grpc/support/alloc.h +2 -35
- data/include/grpc/support/atm.h +2 -55
- data/include/grpc/support/atm_gcc_atomic.h +5 -38
- data/include/grpc/support/atm_gcc_sync.h +2 -50
- data/include/grpc/support/atm_win32.h +2 -88
- data/include/grpc/support/avl.h +7 -7
- data/include/grpc/support/cmdline.h +15 -13
- data/include/grpc/support/cpu.h +5 -3
- data/include/grpc/support/histogram.h +23 -20
- data/include/grpc/support/host_port.h +5 -3
- data/include/grpc/support/log.h +2 -71
- data/include/grpc/support/log_win32.h +2 -2
- data/include/grpc/support/port_platform.h +2 -319
- data/include/grpc/support/slice.h +2 -145
- data/include/grpc/support/slice_buffer.h +2 -65
- data/include/grpc/support/string_util.h +3 -3
- data/include/grpc/support/subprocess.h +8 -6
- data/include/grpc/support/sync.h +2 -278
- data/include/grpc/support/sync_generic.h +2 -18
- data/include/grpc/support/sync_posix.h +2 -10
- data/include/grpc/support/sync_win32.h +2 -12
- data/include/grpc/support/thd.h +11 -11
- data/include/grpc/support/time.h +2 -91
- data/include/grpc/support/tls.h +1 -1
- data/include/grpc/support/tls_gcc.h +1 -1
- data/include/grpc/support/tls_msvc.h +1 -1
- data/include/grpc/support/tls_pthread.h +2 -2
- data/src/boringssl/err_data.c +1252 -0
- data/src/core/census/context.c +492 -8
- data/src/core/census/grpc_filter.c +3 -3
- data/src/core/census/initialize.c +4 -7
- data/src/core/census/operation.c +2 -2
- data/src/core/census/placeholders.c +109 -0
- data/src/core/census/rpc_metric_id.h +6 -6
- data/src/core/census/tracing.c +1 -1
- data/src/core/channel/channel_args.c +4 -3
- data/src/core/channel/channel_stack.c +1 -1
- data/src/core/channel/client_channel.c +18 -14
- data/src/core/channel/client_uchannel.c +3 -3
- data/src/core/channel/compress_filter.c +8 -8
- data/src/core/channel/http_client_filter.c +2 -2
- data/src/core/channel/http_server_filter.c +9 -9
- data/src/core/channel/subchannel_call_holder.c +12 -10
- data/src/core/client_config/lb_policies/pick_first.c +49 -31
- data/src/core/client_config/lb_policies/round_robin.c +7 -7
- data/src/core/client_config/resolvers/dns_resolver.c +3 -3
- data/src/core/client_config/resolvers/sockaddr_resolver.c +5 -5
- data/src/core/client_config/subchannel.c +36 -25
- data/src/core/compression/algorithm.c +3 -3
- data/src/core/httpcli/format_request.c +1 -1
- data/src/core/httpcli/httpcli.c +5 -5
- data/src/core/httpcli/httpcli_security_connector.c +2 -3
- data/src/core/httpcli/parser.c +7 -7
- data/src/core/httpcli/parser.h +1 -1
- data/src/core/iomgr/closure.c +7 -7
- data/src/core/iomgr/closure.h +6 -5
- data/src/core/iomgr/exec_ctx.c +12 -8
- data/src/core/iomgr/exec_ctx.h +12 -5
- data/src/core/iomgr/executor.c +4 -4
- data/src/core/iomgr/executor.h +2 -2
- data/src/core/iomgr/fd_posix.c +28 -17
- data/src/core/iomgr/fd_posix.h +7 -4
- data/src/core/iomgr/iocp_windows.c +6 -8
- data/src/core/iomgr/pollset_multipoller_with_epoll.c +70 -5
- data/src/core/iomgr/pollset_multipoller_with_poll_posix.c +4 -2
- data/src/core/iomgr/pollset_posix.c +15 -15
- data/src/core/iomgr/pollset_posix.h +4 -2
- data/src/core/iomgr/pollset_windows.c +3 -12
- data/src/core/iomgr/resolve_address_posix.c +2 -2
- data/src/core/iomgr/resolve_address_windows.c +2 -2
- data/src/core/iomgr/sockaddr_utils.c +6 -6
- data/src/core/iomgr/sockaddr_win32.h +1 -6
- data/src/core/iomgr/tcp_client_posix.c +7 -7
- data/src/core/iomgr/tcp_client_windows.c +4 -4
- data/src/core/iomgr/tcp_posix.c +14 -8
- data/src/core/iomgr/tcp_posix.h +7 -1
- data/src/core/iomgr/tcp_server.h +40 -20
- data/src/core/iomgr/tcp_server_posix.c +106 -49
- data/src/core/iomgr/tcp_server_windows.c +98 -49
- data/src/core/iomgr/tcp_windows.c +11 -15
- data/src/core/iomgr/timer.c +8 -8
- data/src/core/iomgr/timer.h +1 -1
- data/src/core/iomgr/timer_heap.c +10 -10
- data/src/core/iomgr/timer_heap.h +2 -2
- data/src/core/iomgr/udp_server.c +2 -12
- data/src/core/iomgr/udp_server.h +1 -9
- data/src/core/iomgr/workqueue.h +2 -4
- data/src/core/iomgr/workqueue_posix.c +3 -3
- data/src/core/json/json_reader.c +11 -12
- data/src/core/json/json_reader.h +4 -4
- data/src/core/json/json_string.c +19 -19
- data/src/core/json/json_writer.c +7 -9
- data/src/core/profiling/basic_timers.c +1 -1
- data/src/core/security/base64.c +9 -9
- data/src/core/security/client_auth_filter.c +4 -4
- data/src/core/security/credentials.c +5 -5
- data/src/core/security/google_default_credentials.c +3 -3
- data/src/core/security/handshake.c +6 -5
- data/src/core/security/json_token.c +13 -7
- data/src/core/security/jwt_verifier.c +3 -2
- data/src/core/security/secure_endpoint.c +16 -16
- data/src/core/security/security_connector.c +47 -17
- data/src/core/security/security_connector.h +5 -5
- data/src/core/security/server_auth_filter.c +3 -3
- data/src/core/security/server_secure_chttp2.c +30 -31
- data/src/core/statistics/census_interface.h +2 -2
- data/src/core/statistics/census_rpc_stats.h +3 -3
- data/src/core/support/alloc.c +1 -1
- data/src/core/support/cpu_posix.c +2 -2
- data/src/core/support/env_linux.c +12 -2
- data/src/core/support/env_win32.c +15 -7
- data/src/core/support/histogram.c +5 -5
- data/src/core/support/log_posix.c +1 -1
- data/src/core/support/log_win32.c +4 -3
- data/src/core/support/murmur_hash.c +11 -11
- data/src/core/support/murmur_hash.h +1 -1
- data/src/core/support/slice.c +11 -11
- data/src/core/support/slice_buffer.c +6 -6
- data/src/core/support/stack_lockfree.c +20 -10
- data/src/core/support/string.c +15 -15
- data/src/core/support/string.h +5 -5
- data/src/core/support/string_win32.c +5 -5
- data/src/core/support/subprocess_windows.c +141 -0
- data/src/core/support/sync.c +4 -4
- data/src/core/support/sync_posix.c +2 -2
- data/src/core/support/sync_win32.c +10 -5
- data/src/core/support/time.c +29 -29
- data/src/core/support/time_posix.c +15 -6
- data/src/core/support/time_precise.c +2 -2
- data/src/core/support/time_win32.c +18 -9
- data/src/core/support/tls_pthread.c +1 -1
- data/src/core/support/wrap_memcpy.c +53 -0
- data/src/core/surface/alarm.c +83 -0
- data/src/core/surface/byte_buffer_reader.c +1 -1
- data/src/core/surface/call.c +78 -69
- data/src/core/surface/call.h +2 -2
- data/src/core/surface/call_test_only.h +2 -2
- data/src/core/surface/channel.c +9 -9
- data/src/core/surface/channel.h +1 -1
- data/src/core/surface/channel_connectivity.c +3 -3
- data/src/core/surface/channel_create.c +3 -3
- data/src/core/surface/channel_ping.c +2 -2
- data/src/core/surface/completion_queue.c +11 -12
- data/src/core/surface/completion_queue.h +1 -1
- data/src/core/surface/init.c +7 -5
- data/src/core/surface/lame_client.c +3 -3
- data/src/core/surface/secure_channel_create.c +3 -3
- data/src/core/surface/server.c +28 -28
- data/src/core/surface/server_chttp2.c +8 -8
- data/src/core/surface/server_create.c +1 -4
- data/src/core/surface/validate_metadata.c +3 -3
- data/src/core/surface/version.c +2 -2
- data/src/core/transport/byte_stream.c +8 -6
- data/src/core/transport/byte_stream.h +6 -5
- data/src/core/transport/chttp2/bin_encoder.c +29 -29
- data/src/core/transport/chttp2/frame_data.c +29 -26
- data/src/core/transport/chttp2/frame_data.h +6 -6
- data/src/core/transport/chttp2/frame_goaway.c +30 -30
- data/src/core/transport/chttp2/frame_goaway.h +6 -6
- data/src/core/transport/chttp2/frame_ping.c +6 -6
- data/src/core/transport/chttp2/frame_ping.h +5 -5
- data/src/core/transport/chttp2/frame_rst_stream.c +18 -19
- data/src/core/transport/chttp2/frame_rst_stream.h +4 -4
- data/src/core/transport/chttp2/frame_settings.c +30 -30
- data/src/core/transport/chttp2/frame_settings.h +13 -13
- data/src/core/transport/chttp2/frame_window_update.c +17 -18
- data/src/core/transport/chttp2/frame_window_update.h +5 -7
- data/src/core/transport/chttp2/hpack_encoder.c +69 -73
- data/src/core/transport/chttp2/hpack_encoder.h +16 -16
- data/src/core/transport/chttp2/hpack_parser.c +167 -167
- data/src/core/transport/chttp2/hpack_parser.h +16 -16
- data/src/core/transport/chttp2/hpack_table.c +13 -13
- data/src/core/transport/chttp2/hpack_table.h +11 -11
- data/src/core/transport/chttp2/internal.h +97 -86
- data/src/core/transport/chttp2/parsing.c +25 -25
- data/src/core/transport/chttp2/stream_lists.c +26 -3
- data/src/core/transport/chttp2/stream_map.c +13 -14
- data/src/core/transport/chttp2/stream_map.h +6 -7
- data/src/core/transport/chttp2/timeout_encoding.c +19 -16
- data/src/core/transport/chttp2/varint.c +8 -9
- data/src/core/transport/chttp2/varint.h +7 -8
- data/src/core/transport/chttp2/writing.c +26 -23
- data/src/core/transport/chttp2_transport.c +133 -92
- data/src/core/transport/connectivity_state.c +6 -6
- data/src/core/transport/metadata.c +18 -18
- data/src/core/transport/metadata.h +5 -5
- data/src/core/transport/static_metadata.c +15 -16
- data/src/core/transport/static_metadata.h +5 -5
- data/src/core/transport/transport.c +5 -5
- data/src/core/transport/transport.h +14 -1
- data/src/core/tsi/fake_transport_security.c +7 -7
- data/src/core/tsi/ssl_transport_security.c +6 -4
- data/src/core/tsi/ssl_types.h +55 -0
- data/src/ruby/ext/grpc/extconf.rb +51 -14
- data/src/ruby/ext/grpc/rb_byte_buffer.c +3 -1
- data/src/ruby/ext/grpc/rb_call.c +6 -3
- data/src/ruby/ext/grpc/rb_call_credentials.c +4 -0
- data/src/ruby/ext/grpc/rb_channel.c +4 -2
- data/src/ruby/ext/grpc/rb_channel_args.c +3 -1
- data/src/ruby/ext/grpc/rb_channel_credentials.c +3 -1
- data/src/ruby/ext/grpc/rb_completion_queue.c +3 -1
- data/src/ruby/ext/grpc/rb_event_thread.c +5 -0
- data/src/ruby/ext/grpc/rb_grpc.c +11 -3
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +560 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +843 -0
- data/src/ruby/ext/grpc/rb_loader.c +72 -0
- data/src/ruby/ext/grpc/rb_loader.h +40 -0
- data/src/ruby/ext/grpc/rb_server.c +3 -1
- data/src/ruby/ext/grpc/rb_server_credentials.c +4 -2
- data/src/ruby/lib/grpc/generic/bidi_call.rb +1 -1
- data/src/ruby/lib/grpc/generic/rpc_desc.rb +1 -1
- data/src/ruby/lib/grpc/generic/rpc_server.rb +1 -1
- data/src/ruby/lib/grpc/grpc.rb +34 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/pb/health/checker_spec.rb +1 -1
- data/third_party/boringssl/crypto/aes/aes.c +1142 -0
- data/third_party/boringssl/crypto/aes/internal.h +87 -0
- data/third_party/boringssl/crypto/aes/mode_wrappers.c +108 -0
- data/third_party/boringssl/crypto/asn1/a_bitstr.c +255 -0
- data/third_party/boringssl/crypto/asn1/a_bool.c +112 -0
- data/third_party/boringssl/crypto/asn1/a_bytes.c +317 -0
- data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +286 -0
- data/third_party/boringssl/crypto/asn1/a_dup.c +103 -0
- data/third_party/boringssl/crypto/asn1/a_enum.c +183 -0
- data/third_party/boringssl/crypto/asn1/a_gentm.c +255 -0
- data/third_party/boringssl/crypto/asn1/a_i2d_fp.c +154 -0
- data/third_party/boringssl/crypto/asn1/a_int.c +456 -0
- data/third_party/boringssl/crypto/asn1/a_mbstr.c +390 -0
- data/third_party/boringssl/crypto/asn1/a_object.c +412 -0
- data/third_party/boringssl/crypto/asn1/a_octet.c +70 -0
- data/third_party/boringssl/crypto/asn1/a_print.c +119 -0
- data/third_party/boringssl/crypto/asn1/a_strnid.c +286 -0
- data/third_party/boringssl/crypto/asn1/a_time.c +221 -0
- data/third_party/boringssl/crypto/asn1/a_type.c +160 -0
- data/third_party/boringssl/crypto/asn1/a_utctm.c +342 -0
- data/third_party/boringssl/crypto/asn1/a_utf8.c +210 -0
- data/third_party/boringssl/crypto/asn1/asn1_lib.c +510 -0
- data/third_party/boringssl/crypto/asn1/asn1_locl.h +73 -0
- data/third_party/boringssl/crypto/asn1/asn1_par.c +444 -0
- data/third_party/boringssl/crypto/asn1/asn_pack.c +104 -0
- data/third_party/boringssl/crypto/asn1/bio_asn1.c +496 -0
- data/third_party/boringssl/crypto/asn1/bio_ndef.c +254 -0
- data/third_party/boringssl/crypto/asn1/f_enum.c +206 -0
- data/third_party/boringssl/crypto/asn1/f_int.c +210 -0
- data/third_party/boringssl/crypto/asn1/f_string.c +204 -0
- data/third_party/boringssl/crypto/asn1/t_bitst.c +102 -0
- data/third_party/boringssl/crypto/asn1/t_pkey.c +112 -0
- data/third_party/boringssl/crypto/asn1/tasn_dec.c +1342 -0
- data/third_party/boringssl/crypto/asn1/tasn_enc.c +695 -0
- data/third_party/boringssl/crypto/asn1/tasn_fre.c +264 -0
- data/third_party/boringssl/crypto/asn1/tasn_new.c +398 -0
- data/third_party/boringssl/crypto/asn1/tasn_prn.c +642 -0
- data/third_party/boringssl/crypto/asn1/tasn_typ.c +137 -0
- data/third_party/boringssl/crypto/asn1/tasn_utl.c +266 -0
- data/third_party/boringssl/crypto/asn1/x_bignum.c +143 -0
- data/third_party/boringssl/crypto/asn1/x_long.c +182 -0
- data/third_party/boringssl/crypto/base64/base64.c +478 -0
- data/third_party/boringssl/crypto/bio/bio.c +608 -0
- data/third_party/boringssl/crypto/bio/bio_mem.c +327 -0
- data/third_party/boringssl/crypto/bio/buffer.c +496 -0
- data/third_party/boringssl/crypto/bio/connect.c +544 -0
- data/third_party/boringssl/crypto/bio/fd.c +270 -0
- data/third_party/boringssl/crypto/bio/file.c +349 -0
- data/third_party/boringssl/crypto/bio/hexdump.c +192 -0
- data/third_party/boringssl/crypto/bio/internal.h +108 -0
- data/third_party/boringssl/crypto/bio/pair.c +803 -0
- data/third_party/boringssl/crypto/bio/printf.c +119 -0
- data/third_party/boringssl/crypto/bio/socket.c +195 -0
- data/third_party/boringssl/crypto/bio/socket_helper.c +113 -0
- data/third_party/boringssl/crypto/bn/add.c +377 -0
- data/third_party/boringssl/crypto/bn/asm/x86_64-gcc.c +599 -0
- data/third_party/boringssl/crypto/bn/bn.c +341 -0
- data/third_party/boringssl/crypto/bn/bn_asn1.c +93 -0
- data/third_party/boringssl/crypto/bn/cmp.c +200 -0
- data/third_party/boringssl/crypto/bn/convert.c +597 -0
- data/third_party/boringssl/crypto/bn/ctx.c +311 -0
- data/third_party/boringssl/crypto/bn/div.c +625 -0
- data/third_party/boringssl/crypto/bn/exponentiation.c +1544 -0
- data/third_party/boringssl/crypto/bn/gcd.c +711 -0
- data/third_party/boringssl/crypto/bn/generic.c +1019 -0
- data/third_party/boringssl/crypto/bn/internal.h +294 -0
- data/third_party/boringssl/crypto/bn/kronecker.c +175 -0
- data/third_party/boringssl/crypto/bn/montgomery.c +561 -0
- data/third_party/boringssl/crypto/bn/mul.c +888 -0
- data/third_party/boringssl/crypto/bn/prime.c +845 -0
- data/third_party/boringssl/crypto/bn/random.c +326 -0
- data/third_party/boringssl/crypto/bn/rsaz_exp.c +326 -0
- data/third_party/boringssl/crypto/bn/rsaz_exp.h +56 -0
- data/third_party/boringssl/crypto/bn/shift.c +299 -0
- data/third_party/boringssl/crypto/bn/sqrt.c +505 -0
- data/third_party/boringssl/crypto/buf/buf.c +235 -0
- data/third_party/boringssl/crypto/bytestring/ber.c +221 -0
- data/third_party/boringssl/crypto/bytestring/cbb.c +411 -0
- data/third_party/boringssl/crypto/bytestring/cbs.c +415 -0
- data/third_party/boringssl/crypto/bytestring/internal.h +46 -0
- data/third_party/boringssl/crypto/chacha/chacha_generic.c +140 -0
- data/third_party/boringssl/crypto/chacha/chacha_vec.c +323 -0
- data/third_party/boringssl/crypto/cipher/aead.c +167 -0
- data/third_party/boringssl/crypto/cipher/cipher.c +652 -0
- data/third_party/boringssl/crypto/cipher/derive_key.c +154 -0
- data/third_party/boringssl/crypto/cipher/e_aes.c +1767 -0
- data/third_party/boringssl/crypto/cipher/e_chacha20poly1305.c +311 -0
- data/third_party/boringssl/crypto/cipher/e_des.c +207 -0
- data/third_party/boringssl/crypto/cipher/e_null.c +85 -0
- data/third_party/boringssl/crypto/cipher/e_rc2.c +443 -0
- data/third_party/boringssl/crypto/cipher/e_rc4.c +87 -0
- data/third_party/boringssl/crypto/cipher/e_ssl3.c +463 -0
- data/third_party/boringssl/crypto/cipher/e_tls.c +673 -0
- data/third_party/boringssl/crypto/cipher/internal.h +164 -0
- data/third_party/boringssl/crypto/cipher/tls_cbc.c +495 -0
- data/third_party/boringssl/crypto/cmac/cmac.c +239 -0
- data/third_party/boringssl/crypto/conf/conf.c +778 -0
- data/third_party/boringssl/crypto/conf/conf_def.h +127 -0
- data/third_party/boringssl/crypto/conf/internal.h +31 -0
- data/third_party/boringssl/crypto/cpu-arm.c +199 -0
- data/third_party/boringssl/crypto/cpu-intel.c +261 -0
- data/third_party/boringssl/crypto/crypto.c +140 -0
- data/third_party/boringssl/crypto/curve25519/curve25519.c +4897 -0
- data/third_party/boringssl/crypto/des/des.c +771 -0
- data/third_party/boringssl/crypto/des/internal.h +212 -0
- data/third_party/boringssl/crypto/dh/check.c +180 -0
- data/third_party/boringssl/crypto/dh/dh.c +463 -0
- data/third_party/boringssl/crypto/dh/dh_asn1.c +84 -0
- data/third_party/boringssl/crypto/dh/internal.h +80 -0
- data/third_party/boringssl/crypto/dh/params.c +301 -0
- data/third_party/boringssl/crypto/digest/digest.c +248 -0
- data/third_party/boringssl/crypto/digest/digests.c +321 -0
- data/third_party/boringssl/crypto/digest/internal.h +112 -0
- data/third_party/boringssl/crypto/digest/md32_common.h +322 -0
- data/third_party/boringssl/crypto/directory.h +66 -0
- data/third_party/boringssl/crypto/directory_posix.c +108 -0
- data/third_party/boringssl/crypto/directory_win.c +144 -0
- data/third_party/boringssl/crypto/dsa/dsa.c +908 -0
- data/third_party/boringssl/crypto/dsa/dsa_asn1.c +150 -0
- data/third_party/boringssl/crypto/dsa/internal.h +78 -0
- data/third_party/boringssl/crypto/ec/ec.c +889 -0
- data/third_party/boringssl/crypto/ec/ec_asn1.c +586 -0
- data/third_party/boringssl/crypto/ec/ec_key.c +482 -0
- data/third_party/boringssl/crypto/ec/ec_montgomery.c +280 -0
- data/third_party/boringssl/crypto/ec/internal.h +318 -0
- data/third_party/boringssl/crypto/ec/oct.c +416 -0
- data/third_party/boringssl/crypto/ec/p224-64.c +1305 -0
- data/third_party/boringssl/crypto/ec/p256-64.c +1878 -0
- data/third_party/boringssl/crypto/ec/p256-x86_64-table.h +9548 -0
- data/third_party/boringssl/crypto/ec/p256-x86_64.c +596 -0
- data/third_party/boringssl/crypto/ec/simple.c +1313 -0
- data/third_party/boringssl/crypto/ec/util-64.c +183 -0
- data/third_party/boringssl/crypto/ec/wnaf.c +449 -0
- data/third_party/boringssl/crypto/ecdh/ecdh.c +153 -0
- data/third_party/boringssl/crypto/ecdsa/ecdsa.c +496 -0
- data/third_party/boringssl/crypto/ecdsa/ecdsa_asn1.c +240 -0
- data/third_party/boringssl/crypto/engine/engine.c +96 -0
- data/third_party/boringssl/crypto/err/err.c +756 -0
- data/third_party/boringssl/crypto/evp/algorithm.c +153 -0
- data/third_party/boringssl/crypto/evp/digestsign.c +159 -0
- data/third_party/boringssl/crypto/evp/evp.c +411 -0
- data/third_party/boringssl/crypto/evp/evp_asn1.c +179 -0
- data/third_party/boringssl/crypto/evp/evp_ctx.c +477 -0
- data/third_party/boringssl/crypto/evp/internal.h +278 -0
- data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +588 -0
- data/third_party/boringssl/crypto/evp/p_ec.c +283 -0
- data/third_party/boringssl/crypto/evp/p_ec_asn1.c +562 -0
- data/third_party/boringssl/crypto/evp/p_rsa.c +596 -0
- data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +737 -0
- data/third_party/boringssl/crypto/evp/pbkdf.c +151 -0
- data/third_party/boringssl/crypto/evp/sign.c +151 -0
- data/third_party/boringssl/crypto/ex_data.c +294 -0
- data/third_party/boringssl/crypto/hkdf/hkdf.c +89 -0
- data/third_party/boringssl/crypto/hmac/hmac.c +213 -0
- data/third_party/boringssl/crypto/internal.h +532 -0
- data/third_party/boringssl/crypto/lhash/lhash.c +346 -0
- data/third_party/boringssl/crypto/md4/md4.c +225 -0
- data/third_party/boringssl/crypto/md5/md5.c +275 -0
- data/third_party/boringssl/crypto/mem.c +200 -0
- data/third_party/boringssl/crypto/modes/cbc.c +216 -0
- data/third_party/boringssl/crypto/modes/cfb.c +231 -0
- data/third_party/boringssl/crypto/modes/ctr.c +226 -0
- data/third_party/boringssl/crypto/modes/gcm.c +1252 -0
- data/third_party/boringssl/crypto/modes/internal.h +370 -0
- data/third_party/boringssl/crypto/modes/ofb.c +108 -0
- data/third_party/boringssl/crypto/obj/obj.c +664 -0
- data/third_party/boringssl/crypto/obj/obj_dat.h +5257 -0
- data/third_party/boringssl/crypto/obj/obj_xref.c +124 -0
- data/third_party/boringssl/crypto/obj/obj_xref.h +96 -0
- data/third_party/boringssl/crypto/pem/pem_all.c +281 -0
- data/third_party/boringssl/crypto/pem/pem_info.c +404 -0
- data/third_party/boringssl/crypto/pem/pem_lib.c +835 -0
- data/third_party/boringssl/crypto/pem/pem_oth.c +89 -0
- data/third_party/boringssl/crypto/pem/pem_pk8.c +244 -0
- data/third_party/boringssl/crypto/pem/pem_pkey.c +312 -0
- data/third_party/boringssl/crypto/pem/pem_x509.c +65 -0
- data/third_party/boringssl/crypto/pem/pem_xaux.c +66 -0
- data/third_party/boringssl/crypto/pkcs8/internal.h +83 -0
- data/third_party/boringssl/crypto/pkcs8/p5_pbe.c +150 -0
- data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +440 -0
- data/third_party/boringssl/crypto/pkcs8/p8_pkey.c +85 -0
- data/third_party/boringssl/crypto/pkcs8/pkcs8.c +1217 -0
- data/third_party/boringssl/crypto/poly1305/poly1305.c +331 -0
- data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +301 -0
- data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +892 -0
- data/third_party/boringssl/crypto/rand/internal.h +32 -0
- data/third_party/boringssl/crypto/rand/rand.c +239 -0
- data/third_party/boringssl/crypto/rand/urandom.c +223 -0
- data/third_party/boringssl/crypto/rand/windows.c +56 -0
- data/third_party/boringssl/crypto/rc4/rc4.c +283 -0
- data/third_party/boringssl/crypto/refcount_c11.c +67 -0
- data/third_party/boringssl/crypto/refcount_lock.c +53 -0
- data/third_party/boringssl/crypto/rsa/blinding.c +462 -0
- data/third_party/boringssl/crypto/rsa/internal.h +164 -0
- data/third_party/boringssl/crypto/rsa/padding.c +711 -0
- data/third_party/boringssl/crypto/rsa/rsa.c +808 -0
- data/third_party/boringssl/crypto/rsa/rsa_asn1.c +473 -0
- data/third_party/boringssl/crypto/rsa/rsa_impl.c +1138 -0
- data/third_party/boringssl/crypto/sha/sha1.c +337 -0
- data/third_party/boringssl/crypto/sha/sha256.c +327 -0
- data/third_party/boringssl/crypto/sha/sha512.c +607 -0
- data/third_party/boringssl/crypto/stack/stack.c +386 -0
- data/third_party/boringssl/crypto/test/scoped_types.h +137 -0
- data/third_party/boringssl/crypto/test/test_util.h +35 -0
- data/third_party/boringssl/crypto/thread.c +101 -0
- data/third_party/boringssl/crypto/thread_none.c +55 -0
- data/third_party/boringssl/crypto/thread_pthread.c +167 -0
- data/third_party/boringssl/crypto/thread_win.c +282 -0
- data/third_party/boringssl/crypto/time_support.c +212 -0
- data/third_party/boringssl/crypto/x509/a_digest.c +97 -0
- data/third_party/boringssl/crypto/x509/a_sign.c +136 -0
- data/third_party/boringssl/crypto/x509/a_strex.c +564 -0
- data/third_party/boringssl/crypto/x509/a_verify.c +133 -0
- data/third_party/boringssl/crypto/x509/asn1_gen.c +873 -0
- data/third_party/boringssl/crypto/x509/by_dir.c +491 -0
- data/third_party/boringssl/crypto/x509/by_file.c +295 -0
- data/third_party/boringssl/crypto/x509/charmap.h +15 -0
- data/third_party/boringssl/crypto/x509/i2d_pr.c +84 -0
- data/third_party/boringssl/crypto/x509/pkcs7.c +353 -0
- data/third_party/boringssl/crypto/x509/t_crl.c +129 -0
- data/third_party/boringssl/crypto/x509/t_req.c +246 -0
- data/third_party/boringssl/crypto/x509/t_x509.c +500 -0
- data/third_party/boringssl/crypto/x509/t_x509a.c +109 -0
- data/third_party/boringssl/crypto/x509/vpm_int.h +70 -0
- data/third_party/boringssl/crypto/x509/x509.c +152 -0
- data/third_party/boringssl/crypto/x509/x509_att.c +353 -0
- data/third_party/boringssl/crypto/x509/x509_cmp.c +490 -0
- data/third_party/boringssl/crypto/x509/x509_d2.c +105 -0
- data/third_party/boringssl/crypto/x509/x509_def.c +88 -0
- data/third_party/boringssl/crypto/x509/x509_ext.c +206 -0
- data/third_party/boringssl/crypto/x509/x509_lu.c +738 -0
- data/third_party/boringssl/crypto/x509/x509_obj.c +191 -0
- data/third_party/boringssl/crypto/x509/x509_r2x.c +113 -0
- data/third_party/boringssl/crypto/x509/x509_req.c +315 -0
- data/third_party/boringssl/crypto/x509/x509_set.c +154 -0
- data/third_party/boringssl/crypto/x509/x509_trs.c +304 -0
- data/third_party/boringssl/crypto/x509/x509_txt.c +209 -0
- data/third_party/boringssl/crypto/x509/x509_v3.c +271 -0
- data/third_party/boringssl/crypto/x509/x509_vfy.c +2456 -0
- data/third_party/boringssl/crypto/x509/x509_vpm.c +672 -0
- data/third_party/boringssl/crypto/x509/x509cset.c +172 -0
- data/third_party/boringssl/crypto/x509/x509name.c +381 -0
- data/third_party/boringssl/crypto/x509/x509rset.c +80 -0
- data/third_party/boringssl/crypto/x509/x509spki.c +135 -0
- data/third_party/boringssl/crypto/x509/x509type.c +128 -0
- data/third_party/boringssl/crypto/x509/x_algor.c +154 -0
- data/third_party/boringssl/crypto/x509/x_all.c +547 -0
- data/third_party/boringssl/crypto/x509/x_attrib.c +117 -0
- data/third_party/boringssl/crypto/x509/x_crl.c +560 -0
- data/third_party/boringssl/crypto/x509/x_exten.c +75 -0
- data/third_party/boringssl/crypto/x509/x_info.c +95 -0
- data/third_party/boringssl/crypto/x509/x_name.c +538 -0
- data/third_party/boringssl/crypto/x509/x_pkey.c +100 -0
- data/third_party/boringssl/crypto/x509/x_pubkey.c +384 -0
- data/third_party/boringssl/crypto/x509/x_req.c +112 -0
- data/third_party/boringssl/crypto/x509/x_sig.c +69 -0
- data/third_party/boringssl/crypto/x509/x_spki.c +78 -0
- data/third_party/boringssl/crypto/x509/x_val.c +69 -0
- data/third_party/boringssl/crypto/x509/x_x509.c +227 -0
- data/third_party/boringssl/crypto/x509/x_x509a.c +197 -0
- data/third_party/boringssl/crypto/x509v3/ext_dat.h +129 -0
- data/third_party/boringssl/crypto/x509v3/pcy_cache.c +299 -0
- data/third_party/boringssl/crypto/x509v3/pcy_data.c +137 -0
- data/third_party/boringssl/crypto/x509v3/pcy_int.h +212 -0
- data/third_party/boringssl/crypto/x509v3/pcy_lib.c +165 -0
- data/third_party/boringssl/crypto/x509v3/pcy_map.c +133 -0
- data/third_party/boringssl/crypto/x509v3/pcy_node.c +197 -0
- data/third_party/boringssl/crypto/x509v3/pcy_tree.c +876 -0
- data/third_party/boringssl/crypto/x509v3/v3_akey.c +212 -0
- data/third_party/boringssl/crypto/x509v3/v3_akeya.c +71 -0
- data/third_party/boringssl/crypto/x509v3/v3_alt.c +622 -0
- data/third_party/boringssl/crypto/x509v3/v3_bcons.c +126 -0
- data/third_party/boringssl/crypto/x509v3/v3_bitst.c +141 -0
- data/third_party/boringssl/crypto/x509v3/v3_conf.c +459 -0
- data/third_party/boringssl/crypto/x509v3/v3_cpols.c +475 -0
- data/third_party/boringssl/crypto/x509v3/v3_crld.c +616 -0
- data/third_party/boringssl/crypto/x509v3/v3_enum.c +98 -0
- data/third_party/boringssl/crypto/x509v3/v3_extku.c +145 -0
- data/third_party/boringssl/crypto/x509v3/v3_genn.c +252 -0
- data/third_party/boringssl/crypto/x509v3/v3_ia5.c +117 -0
- data/third_party/boringssl/crypto/x509v3/v3_info.c +200 -0
- data/third_party/boringssl/crypto/x509v3/v3_int.c +87 -0
- data/third_party/boringssl/crypto/x509v3/v3_lib.c +335 -0
- data/third_party/boringssl/crypto/x509v3/v3_ncons.c +510 -0
- data/third_party/boringssl/crypto/x509v3/v3_pci.c +335 -0
- data/third_party/boringssl/crypto/x509v3/v3_pcia.c +56 -0
- data/third_party/boringssl/crypto/x509v3/v3_pcons.c +142 -0
- data/third_party/boringssl/crypto/x509v3/v3_pku.c +109 -0
- data/third_party/boringssl/crypto/x509v3/v3_pmaps.c +156 -0
- data/third_party/boringssl/crypto/x509v3/v3_prn.c +207 -0
- data/third_party/boringssl/crypto/x509v3/v3_purp.c +805 -0
- data/third_party/boringssl/crypto/x509v3/v3_skey.c +148 -0
- data/third_party/boringssl/crypto/x509v3/v3_sxnet.c +266 -0
- data/third_party/boringssl/crypto/x509v3/v3_utl.c +1322 -0
- data/third_party/boringssl/include/openssl/aead.h +346 -0
- data/third_party/boringssl/include/openssl/aes.h +158 -0
- data/third_party/boringssl/include/openssl/arm_arch.h +127 -0
- data/third_party/boringssl/include/openssl/asn1.h +1168 -0
- data/third_party/boringssl/include/openssl/asn1_mac.h +75 -0
- data/third_party/boringssl/include/openssl/asn1t.h +906 -0
- data/third_party/boringssl/include/openssl/base.h +261 -0
- data/third_party/boringssl/include/openssl/base64.h +184 -0
- data/third_party/boringssl/include/openssl/bio.h +902 -0
- data/third_party/boringssl/include/openssl/blowfish.h +93 -0
- data/third_party/boringssl/include/openssl/bn.h +885 -0
- data/third_party/boringssl/include/openssl/buf.h +118 -0
- data/third_party/boringssl/include/openssl/buffer.h +18 -0
- data/third_party/boringssl/include/openssl/bytestring.h +360 -0
- data/third_party/boringssl/include/openssl/cast.h +96 -0
- data/third_party/boringssl/include/openssl/chacha.h +37 -0
- data/third_party/boringssl/include/openssl/cipher.h +571 -0
- data/third_party/boringssl/include/openssl/cmac.h +76 -0
- data/third_party/boringssl/include/openssl/conf.h +145 -0
- data/third_party/boringssl/include/openssl/cpu.h +184 -0
- data/third_party/boringssl/include/openssl/crypto.h +68 -0
- data/third_party/boringssl/include/openssl/curve25519.h +88 -0
- data/third_party/boringssl/include/openssl/des.h +177 -0
- data/third_party/boringssl/include/openssl/dh.h +238 -0
- data/third_party/boringssl/include/openssl/digest.h +258 -0
- data/third_party/boringssl/include/openssl/dsa.h +343 -0
- data/third_party/boringssl/include/openssl/dtls1.h +16 -0
- data/third_party/boringssl/include/openssl/ec.h +355 -0
- data/third_party/boringssl/include/openssl/ec_key.h +280 -0
- data/third_party/boringssl/include/openssl/ecdh.h +102 -0
- data/third_party/boringssl/include/openssl/ecdsa.h +206 -0
- data/third_party/boringssl/include/openssl/engine.h +98 -0
- data/third_party/boringssl/include/openssl/err.h +487 -0
- data/third_party/boringssl/include/openssl/evp.h +750 -0
- data/third_party/boringssl/include/openssl/ex_data.h +213 -0
- data/third_party/boringssl/include/openssl/hkdf.h +44 -0
- data/third_party/boringssl/include/openssl/hmac.h +160 -0
- data/third_party/boringssl/include/openssl/lhash.h +192 -0
- data/third_party/boringssl/include/openssl/lhash_macros.h +132 -0
- data/third_party/boringssl/include/openssl/md4.h +102 -0
- data/third_party/boringssl/include/openssl/md5.h +107 -0
- data/third_party/boringssl/include/openssl/mem.h +140 -0
- data/third_party/boringssl/include/openssl/obj.h +198 -0
- data/third_party/boringssl/include/openssl/obj_mac.h +4140 -0
- data/third_party/boringssl/include/openssl/objects.h +18 -0
- data/third_party/boringssl/include/openssl/opensslfeatures.h +60 -0
- data/third_party/boringssl/include/openssl/opensslv.h +18 -0
- data/third_party/boringssl/include/openssl/ossl_typ.h +18 -0
- data/third_party/boringssl/include/openssl/pem.h +521 -0
- data/third_party/boringssl/include/openssl/pkcs12.h +18 -0
- data/third_party/boringssl/include/openssl/pkcs7.h +16 -0
- data/third_party/boringssl/include/openssl/pkcs8.h +220 -0
- data/third_party/boringssl/include/openssl/poly1305.h +51 -0
- data/third_party/boringssl/include/openssl/pqueue.h +146 -0
- data/third_party/boringssl/include/openssl/rand.h +113 -0
- data/third_party/boringssl/include/openssl/rc4.h +90 -0
- data/third_party/boringssl/include/openssl/rsa.h +637 -0
- data/third_party/boringssl/include/openssl/safestack.h +16 -0
- data/third_party/boringssl/include/openssl/sha.h +256 -0
- data/third_party/boringssl/include/openssl/srtp.h +18 -0
- data/third_party/boringssl/include/openssl/ssl.h +4466 -0
- data/third_party/boringssl/include/openssl/ssl3.h +441 -0
- data/third_party/boringssl/include/openssl/stack.h +298 -0
- data/third_party/boringssl/include/openssl/stack_macros.h +4190 -0
- data/third_party/boringssl/include/openssl/thread.h +173 -0
- data/third_party/boringssl/include/openssl/time_support.h +90 -0
- data/third_party/boringssl/include/openssl/tls1.h +653 -0
- data/third_party/boringssl/include/openssl/type_check.h +91 -0
- data/third_party/boringssl/include/openssl/x509.h +1258 -0
- data/third_party/boringssl/include/openssl/x509_vfy.h +611 -0
- data/third_party/boringssl/include/openssl/x509v3.h +798 -0
- data/third_party/boringssl/ssl/custom_extensions.c +257 -0
- data/third_party/boringssl/ssl/d1_both.c +880 -0
- data/third_party/boringssl/ssl/d1_clnt.c +566 -0
- data/third_party/boringssl/ssl/d1_lib.c +340 -0
- data/third_party/boringssl/ssl/d1_meth.c +130 -0
- data/third_party/boringssl/ssl/d1_pkt.c +578 -0
- data/third_party/boringssl/ssl/d1_srtp.c +234 -0
- data/third_party/boringssl/ssl/d1_srvr.c +485 -0
- data/third_party/boringssl/ssl/dtls_record.c +308 -0
- data/third_party/boringssl/ssl/internal.h +1276 -0
- data/third_party/boringssl/ssl/pqueue/pqueue.c +197 -0
- data/third_party/boringssl/ssl/s3_both.c +571 -0
- data/third_party/boringssl/ssl/s3_clnt.c +2241 -0
- data/third_party/boringssl/ssl/s3_enc.c +494 -0
- data/third_party/boringssl/ssl/s3_lib.c +587 -0
- data/third_party/boringssl/ssl/s3_meth.c +166 -0
- data/third_party/boringssl/ssl/s3_pkt.c +732 -0
- data/third_party/boringssl/ssl/s3_srvr.c +2536 -0
- data/third_party/boringssl/ssl/ssl_aead_ctx.c +300 -0
- data/third_party/boringssl/ssl/ssl_asn1.c +718 -0
- data/third_party/boringssl/ssl/ssl_buffer.c +319 -0
- data/third_party/boringssl/ssl/ssl_cert.c +539 -0
- data/third_party/boringssl/ssl/ssl_cipher.c +2003 -0
- data/third_party/boringssl/ssl/ssl_file.c +633 -0
- data/third_party/boringssl/ssl/ssl_lib.c +2653 -0
- data/third_party/boringssl/ssl/ssl_rsa.c +423 -0
- data/third_party/boringssl/ssl/ssl_session.c +764 -0
- data/third_party/boringssl/ssl/ssl_stat.c +591 -0
- data/third_party/boringssl/ssl/t1_enc.c +708 -0
- data/third_party/boringssl/ssl/t1_lib.c +2905 -0
- data/third_party/boringssl/ssl/test/async_bio.h +45 -0
- data/third_party/boringssl/ssl/test/packeted_bio.h +44 -0
- data/third_party/boringssl/ssl/test/scoped_types.h +28 -0
- data/third_party/boringssl/ssl/test/test_config.h +108 -0
- data/third_party/boringssl/ssl/tls_record.c +342 -0
- data/third_party/zlib/adler32.c +179 -0
- data/third_party/zlib/compress.c +80 -0
- data/third_party/zlib/crc32.c +425 -0
- data/third_party/zlib/crc32.h +441 -0
- data/third_party/zlib/deflate.c +1967 -0
- data/third_party/zlib/deflate.h +346 -0
- data/third_party/zlib/gzclose.c +25 -0
- data/third_party/zlib/gzguts.h +209 -0
- data/third_party/zlib/gzlib.c +634 -0
- data/third_party/zlib/gzread.c +594 -0
- data/third_party/zlib/gzwrite.c +577 -0
- data/third_party/zlib/infback.c +640 -0
- data/third_party/zlib/inffast.c +340 -0
- data/third_party/zlib/inffast.h +11 -0
- data/third_party/zlib/inffixed.h +94 -0
- data/third_party/zlib/inflate.c +1512 -0
- data/third_party/zlib/inflate.h +122 -0
- data/third_party/zlib/inftrees.c +306 -0
- data/third_party/zlib/inftrees.h +62 -0
- data/third_party/zlib/trees.c +1226 -0
- data/third_party/zlib/trees.h +128 -0
- data/third_party/zlib/uncompr.c +59 -0
- data/third_party/zlib/zconf.h +511 -0
- data/third_party/zlib/zlib.h +1768 -0
- data/third_party/zlib/zutil.c +324 -0
- data/third_party/zlib/zutil.h +253 -0
- metadata +492 -25
- data/Rakefile +0 -63
- 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
|
@@ -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
|
-
|
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(
|
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->
|
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
|
-
|
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
|
-
|
133
|
+
gpr_free(sp);
|
124
134
|
}
|
125
135
|
gpr_free(s);
|
126
136
|
}
|
127
137
|
|
128
|
-
|
129
|
-
|
130
|
-
|
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,
|
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)
|
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 =
|
386
|
-
s->head
|
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
|
-
|
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
|
-
|
403
|
-
|
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
|
-
|
505
|
+
if (sp) {
|
506
|
+
return sp->port;
|
507
|
+
} else {
|
508
|
+
return -1;
|
509
|
+
}
|
457
510
|
}
|
458
511
|
|
459
|
-
|
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 (
|
464
|
-
return
|
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 */
|
@@ -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
|
@@ -138,15 +138,12 @@ static void tcp_ref(grpc_tcp *tcp) { gpr_ref(&tcp->refcount); }
|
|
138
138
|
#endif
|
139
139
|
|
140
140
|
/* Asynchronous callback from the IOCP, or the background thread. */
|
141
|
-
static void on_read(grpc_exec_ctx *exec_ctx, void *tcpp,
|
141
|
+
static void on_read(grpc_exec_ctx *exec_ctx, void *tcpp, bool success) {
|
142
142
|
grpc_tcp *tcp = tcpp;
|
143
143
|
grpc_closure *cb = tcp->read_cb;
|
144
144
|
grpc_winsocket *socket = tcp->socket;
|
145
145
|
gpr_slice sub;
|
146
|
-
gpr_slice *slice = NULL;
|
147
|
-
size_t nslices = 0;
|
148
146
|
grpc_winsocket_callback_info *info = &socket->read_info;
|
149
|
-
int do_abort = 0;
|
150
147
|
|
151
148
|
if (success) {
|
152
149
|
if (socket->read_info.wsa_error != 0 && !tcp->shutting_down) {
|
@@ -187,7 +184,7 @@ static void win_read(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
|
|
187
184
|
WSABUF buffer;
|
188
185
|
|
189
186
|
if (tcp->shutting_down) {
|
190
|
-
grpc_exec_ctx_enqueue(exec_ctx, cb,
|
187
|
+
grpc_exec_ctx_enqueue(exec_ctx, cb, false, NULL);
|
191
188
|
return;
|
192
189
|
}
|
193
190
|
|
@@ -211,7 +208,7 @@ static void win_read(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
|
|
211
208
|
/* Did we get data immediately ? Yay. */
|
212
209
|
if (info->wsa_error != WSAEWOULDBLOCK) {
|
213
210
|
info->bytes_transfered = bytes_read;
|
214
|
-
grpc_exec_ctx_enqueue(exec_ctx, &tcp->on_read,
|
211
|
+
grpc_exec_ctx_enqueue(exec_ctx, &tcp->on_read, true, NULL);
|
215
212
|
return;
|
216
213
|
}
|
217
214
|
|
@@ -224,7 +221,7 @@ static void win_read(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
|
|
224
221
|
int wsa_error = WSAGetLastError();
|
225
222
|
if (wsa_error != WSA_IO_PENDING) {
|
226
223
|
info->wsa_error = wsa_error;
|
227
|
-
grpc_exec_ctx_enqueue(exec_ctx, &tcp->on_read,
|
224
|
+
grpc_exec_ctx_enqueue(exec_ctx, &tcp->on_read, false, NULL);
|
228
225
|
return;
|
229
226
|
}
|
230
227
|
}
|
@@ -233,12 +230,11 @@ static void win_read(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
|
|
233
230
|
}
|
234
231
|
|
235
232
|
/* Asynchronous callback from the IOCP, or the background thread. */
|
236
|
-
static void on_write(grpc_exec_ctx *exec_ctx, void *tcpp,
|
233
|
+
static void on_write(grpc_exec_ctx *exec_ctx, void *tcpp, bool success) {
|
237
234
|
grpc_tcp *tcp = (grpc_tcp *)tcpp;
|
238
235
|
grpc_winsocket *handle = tcp->socket;
|
239
236
|
grpc_winsocket_callback_info *info = &handle->write_info;
|
240
237
|
grpc_closure *cb;
|
241
|
-
int do_abort = 0;
|
242
238
|
|
243
239
|
gpr_mu_lock(&tcp->mu);
|
244
240
|
cb = tcp->write_cb;
|
@@ -277,7 +273,7 @@ static void win_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
|
|
277
273
|
size_t len;
|
278
274
|
|
279
275
|
if (tcp->shutting_down) {
|
280
|
-
grpc_exec_ctx_enqueue(exec_ctx, cb,
|
276
|
+
grpc_exec_ctx_enqueue(exec_ctx, cb, false, NULL);
|
281
277
|
return;
|
282
278
|
}
|
283
279
|
|
@@ -305,9 +301,9 @@ static void win_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
|
|
305
301
|
connection that has its send queue filled up. But if we don't, then we can
|
306
302
|
avoid doing an async write operation at all. */
|
307
303
|
if (info->wsa_error != WSAEWOULDBLOCK) {
|
308
|
-
|
304
|
+
bool ok = false;
|
309
305
|
if (status == 0) {
|
310
|
-
ok =
|
306
|
+
ok = true;
|
311
307
|
GPR_ASSERT(bytes_sent == tcp->write_slices->length);
|
312
308
|
} else {
|
313
309
|
if (socket->read_info.wsa_error != WSAECONNRESET) {
|
@@ -317,7 +313,7 @@ static void win_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
|
|
317
313
|
}
|
318
314
|
}
|
319
315
|
if (allocated) gpr_free(allocated);
|
320
|
-
grpc_exec_ctx_enqueue(exec_ctx, cb, ok);
|
316
|
+
grpc_exec_ctx_enqueue(exec_ctx, cb, ok, NULL);
|
321
317
|
return;
|
322
318
|
}
|
323
319
|
|
@@ -334,7 +330,7 @@ static void win_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
|
|
334
330
|
int wsa_error = WSAGetLastError();
|
335
331
|
if (wsa_error != WSA_IO_PENDING) {
|
336
332
|
TCP_UNREF(tcp, "write");
|
337
|
-
grpc_exec_ctx_enqueue(exec_ctx, cb,
|
333
|
+
grpc_exec_ctx_enqueue(exec_ctx, cb, false, NULL);
|
338
334
|
return;
|
339
335
|
}
|
340
336
|
}
|
data/src/core/iomgr/timer.c
CHANGED
@@ -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,7 +55,7 @@ typedef struct {
|
|
55
55
|
gpr_timespec queue_deadline_cap;
|
56
56
|
gpr_timespec min_deadline;
|
57
57
|
/* Index in the g_shard_queue */
|
58
|
-
|
58
|
+
uint32_t shard_queue_index;
|
59
59
|
/* This holds all timers with deadlines < queue_deadline_cap. Timers in this
|
60
60
|
list have the top bit of their deadline set to 0. */
|
61
61
|
grpc_timer_heap heap;
|
@@ -82,7 +82,7 @@ static gpr_timespec compute_min_deadline(shard_type *shard) {
|
|
82
82
|
}
|
83
83
|
|
84
84
|
void grpc_timer_list_init(gpr_timespec now) {
|
85
|
-
|
85
|
+
uint32_t i;
|
86
86
|
|
87
87
|
gpr_mu_init(&g_mu);
|
88
88
|
gpr_mu_init(&g_checker_mu);
|
@@ -126,8 +126,8 @@ static double ts_to_dbl(gpr_timespec ts) {
|
|
126
126
|
|
127
127
|
static gpr_timespec dbl_to_ts(double d) {
|
128
128
|
gpr_timespec ts;
|
129
|
-
ts.tv_sec = (
|
130
|
-
ts.tv_nsec = (
|
129
|
+
ts.tv_sec = (int64_t)d;
|
130
|
+
ts.tv_nsec = (int32_t)(1e9 * (d - (double)ts.tv_sec));
|
131
131
|
ts.clock_type = GPR_TIMESPAN;
|
132
132
|
return ts;
|
133
133
|
}
|
@@ -143,7 +143,7 @@ static void list_remove(grpc_timer *timer) {
|
|
143
143
|
timer->prev->next = timer->next;
|
144
144
|
}
|
145
145
|
|
146
|
-
static void swap_adjacent_shards_in_queue(
|
146
|
+
static void swap_adjacent_shards_in_queue(uint32_t first_shard_queue_index) {
|
147
147
|
shard_type *temp;
|
148
148
|
temp = g_shard_queue[first_shard_queue_index];
|
149
149
|
g_shard_queue[first_shard_queue_index] =
|
@@ -224,7 +224,7 @@ void grpc_timer_cancel(grpc_exec_ctx *exec_ctx, grpc_timer *timer) {
|
|
224
224
|
shard_type *shard = &g_shards[shard_idx(timer)];
|
225
225
|
gpr_mu_lock(&shard->mu);
|
226
226
|
if (!timer->triggered) {
|
227
|
-
grpc_exec_ctx_enqueue(exec_ctx, &timer->closure,
|
227
|
+
grpc_exec_ctx_enqueue(exec_ctx, &timer->closure, false, NULL);
|
228
228
|
timer->triggered = 1;
|
229
229
|
if (timer->heap_index == INVALID_HEAP_INDEX) {
|
230
230
|
list_remove(timer);
|
@@ -290,7 +290,7 @@ static size_t pop_timers(grpc_exec_ctx *exec_ctx, shard_type *shard,
|
|
290
290
|
grpc_timer *timer;
|
291
291
|
gpr_mu_lock(&shard->mu);
|
292
292
|
while ((timer = pop_one(shard, now))) {
|
293
|
-
grpc_exec_ctx_enqueue(exec_ctx, &timer->closure, success);
|
293
|
+
grpc_exec_ctx_enqueue(exec_ctx, &timer->closure, success, NULL);
|
294
294
|
n++;
|
295
295
|
}
|
296
296
|
*new_min_deadline = compute_min_deadline(shard);
|
data/src/core/iomgr/timer.h
CHANGED
@@ -41,7 +41,7 @@
|
|
41
41
|
|
42
42
|
typedef struct grpc_timer {
|
43
43
|
gpr_timespec deadline;
|
44
|
-
|
44
|
+
uint32_t heap_index; /* INVALID_HEAP_INDEX if not in heap */
|
45
45
|
int triggered;
|
46
46
|
struct grpc_timer *next;
|
47
47
|
struct grpc_timer *prev;
|