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
|
@@ -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
|
-
|
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,
|
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,
|
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,
|
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,
|
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
|
52
|
-
|
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((
|
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((
|
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((
|
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((
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
218
|
+
grpc_exec_ctx_enqueue(exec_ctx, on_done, false, NULL);
|
219
219
|
}
|
220
220
|
|
221
221
|
#endif /* GPR_WINSOCK_SOCKET */
|
data/src/core/iomgr/tcp_posix.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
|
@@ -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
|
-
|
103
|
+
bool success);
|
104
104
|
static void tcp_handle_write(grpc_exec_ctx *exec_ctx, void *arg /* grpc_tcp */,
|
105
|
-
|
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
|
-
|
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,
|
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
|
-
|
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,
|
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;
|
data/src/core/iomgr/tcp_posix.h
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
|
@@ -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. */
|
data/src/core/iomgr/tcp_server.h
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
|
@@ -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
|
-
|
43
|
-
|
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
|
-
|
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
|
58
|
-
|
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
|
-
|
67
|
-
|
76
|
+
int grpc_tcp_server_add_port(grpc_tcp_server *s, const void *addr,
|
77
|
+
size_t addr_len);
|
68
78
|
|
69
|
-
/*
|
70
|
-
|
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
|
-
|
73
|
-
|
74
|
-
|
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
|
-
|
77
|
-
|
90
|
+
/* Ref s and return s. */
|
91
|
+
grpc_tcp_server *grpc_tcp_server_ref(grpc_tcp_server *s);
|
78
92
|
|
79
|
-
|
80
|
-
|
81
|
-
|
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
|
-
|
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(
|
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
|
-
|
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
|
-
|
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,
|
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
|
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,
|
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 =
|
393
|
-
s->head
|
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
|
-
|
413
|
-
|
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 (
|
490
|
-
|
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
|
-
|
525
|
+
if (sp != NULL) {
|
526
|
+
return sp->port;
|
527
|
+
} else {
|
528
|
+
return -1;
|
529
|
+
}
|
495
530
|
}
|
496
531
|
|
497
|
-
|
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
|
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 (
|
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
|
-
|
535
|
-
|
536
|
-
|
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
|
544
|
-
|
545
|
-
|
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
|
549
|
-
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
|
554
|
-
|
555
|
-
|
556
|
-
|
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
|
|