awesome-grpc-that-works 0.12.2 → 0.14.0.dev
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.yardopts +1 -0
- data/Makefile +5783 -22121
- data/include/grpc/byte_buffer.h +2 -83
- data/include/grpc/census.h +173 -121
- data/include/grpc/compression.h +14 -38
- data/include/grpc/grpc.h +85 -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 +378 -0
- data/include/grpc/impl/codegen/log.h +110 -0
- data/include/grpc/impl/codegen/port_platform.h +370 -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 +130 -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 +10 -9
- 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/include/grpc/support/useful.h +3 -1
- data/src/boringssl/err_data.c +1252 -0
- data/src/core/census/context.c +471 -8
- data/src/core/census/grpc_filter.c +5 -5
- data/src/core/census/initialize.c +4 -7
- data/src/core/census/mlog.c +600 -0
- data/src/core/census/mlog.h +95 -0
- 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 +71 -9
- data/src/core/channel/channel_args.h +7 -1
- data/src/core/channel/channel_stack.c +1 -1
- data/src/core/channel/client_channel.c +33 -30
- 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 +4 -4
- data/src/core/channel/http_server_filter.c +11 -11
- data/src/core/channel/subchannel_call_holder.c +11 -11
- data/src/core/client_config/connector.c +3 -2
- data/src/core/client_config/connector.h +2 -2
- data/src/core/client_config/lb_policies/load_balancer_api.c +163 -0
- data/src/core/client_config/lb_policies/load_balancer_api.h +85 -0
- data/src/core/client_config/lb_policies/pick_first.c +57 -40
- data/src/core/client_config/lb_policies/round_robin.c +14 -15
- data/src/core/client_config/lb_policy.c +3 -3
- data/src/core/client_config/lb_policy.h +3 -2
- 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 +84 -39
- data/src/core/client_config/subchannel.h +15 -6
- data/src/core/client_config/subchannel_index.c +261 -0
- data/src/core/client_config/subchannel_index.h +77 -0
- data/src/core/compression/{algorithm.c → compression_algorithm.c} +3 -3
- data/src/core/httpcli/format_request.c +1 -1
- data/src/core/httpcli/httpcli.c +18 -16
- data/src/core/httpcli/httpcli.h +3 -2
- data/src/core/httpcli/httpcli_security_connector.c +9 -10
- 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 +32 -19
- data/src/core/iomgr/fd_posix.h +7 -4
- data/src/core/iomgr/iocp_windows.c +7 -9
- data/src/core/iomgr/iomgr.c +2 -2
- data/src/core/iomgr/pollset.h +9 -10
- data/src/core/iomgr/pollset_multipoller_with_epoll.c +71 -5
- data/src/core/iomgr/pollset_multipoller_with_poll_posix.c +9 -5
- data/src/core/iomgr/pollset_posix.c +44 -49
- data/src/core/iomgr/pollset_posix.h +14 -8
- data/src/core/iomgr/pollset_set.h +3 -9
- data/src/core/iomgr/pollset_set_posix.c +23 -3
- data/src/core/iomgr/pollset_set_posix.h +2 -18
- data/src/core/iomgr/pollset_set_windows.c +3 -3
- data/src/core/iomgr/pollset_set_windows.h +2 -2
- data/src/core/iomgr/pollset_windows.c +29 -37
- data/src/core/iomgr/pollset_windows.h +1 -5
- 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 +14 -12
- data/src/core/iomgr/tcp_client_windows.c +4 -4
- data/src/core/iomgr/tcp_posix.c +18 -10
- 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 +10 -11
- data/src/core/iomgr/timer.h +22 -2
- 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 +7 -16
- data/src/core/iomgr/udp_server.h +2 -9
- data/src/core/iomgr/workqueue.h +2 -4
- data/src/core/iomgr/workqueue_posix.c +4 -3
- data/src/core/iomgr/workqueue_posix.h +3 -1
- 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/proto/grpc/lb/v0/load_balancer.pb.c +119 -0
- data/src/core/proto/grpc/lb/v0/load_balancer.pb.h +182 -0
- data/src/core/security/{base64.c → b64.c} +10 -10
- data/src/core/security/{base64.h → b64.h} +1 -1
- data/src/core/security/client_auth_filter.c +4 -5
- data/src/core/security/credentials.c +17 -10
- data/src/core/security/credentials.h +3 -3
- data/src/core/security/google_default_credentials.c +27 -22
- data/src/core/security/handshake.c +21 -12
- data/src/core/security/handshake.h +2 -1
- data/src/core/security/json_token.c +14 -8
- data/src/core/security/jwt_verifier.c +4 -3
- data/src/core/security/secure_endpoint.c +16 -16
- data/src/core/security/security_connector.c +131 -81
- data/src/core/security/security_connector.h +47 -27
- data/src/core/security/security_context.c +8 -3
- data/src/core/security/server_auth_filter.c +5 -5
- data/src/core/security/server_secure_chttp2.c +36 -37
- 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/avl.c +2 -2
- data/src/core/support/cpu_posix.c +2 -2
- data/src/core/support/env_linux.c +28 -1
- data/src/core/support/env_win32.c +15 -7
- data/src/core/support/histogram.c +5 -5
- data/src/core/support/{file.c → load_file.c} +2 -2
- data/src/core/support/{file.h → load_file.h} +4 -12
- 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/tmpfile.h +55 -0
- data/src/core/support/{file_posix.c → tmpfile_posix.c} +2 -2
- data/src/core/support/{file_win32.c → tmpfile_win32.c} +2 -2
- data/src/core/support/wrap_memcpy.c +53 -0
- data/src/core/surface/alarm.c +84 -0
- data/src/core/surface/byte_buffer_reader.c +1 -1
- data/src/core/surface/call.c +175 -116
- 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 +4 -4
- data/src/core/surface/channel_ping.c +2 -2
- data/src/core/surface/completion_queue.c +84 -53
- data/src/core/surface/completion_queue.h +1 -1
- data/src/core/surface/init.c +11 -5
- data/src/core/surface/lame_client.c +2 -3
- data/src/core/surface/secure_channel_create.c +9 -10
- data/src/core/surface/server.c +30 -30
- 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 +4 -4
- 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 +103 -87
- data/src/core/transport/chttp2/parsing.c +25 -25
- data/src/core/transport/chttp2/stream_lists.c +38 -1
- 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 +25 -22
- data/src/core/transport/chttp2_transport.c +147 -100
- 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 +32 -33
- data/src/core/transport/static_metadata.h +8 -8
- data/src/core/transport/transport.c +6 -5
- data/src/core/transport/transport.h +17 -1
- data/src/core/tsi/fake_transport_security.c +7 -7
- data/src/core/tsi/ssl_transport_security.c +6 -4
- data/src/core/{iomgr/timer_internal.h → tsi/ssl_types.h} +19 -25
- data/src/ruby/ext/grpc/extconf.rb +52 -14
- data/src/ruby/ext/grpc/rb_byte_buffer.c +3 -1
- data/src/ruby/ext/grpc/rb_call.c +7 -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 +28 -19
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +562 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +846 -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/core/time_consts.rb +2 -2
- data/src/ruby/lib/grpc/errors.rb +2 -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/pb/README.md +2 -2
- data/src/ruby/pb/generate_proto_ruby.sh +2 -2
- data/src/ruby/pb/grpc/health/checker.rb +11 -11
- data/src/ruby/pb/grpc/health/v1/health.rb +28 -0
- data/src/ruby/pb/grpc/health/{v1alpha → v1}/health_services.rb +4 -4
- data/src/ruby/spec/client_server_spec.rb +2 -1
- data/src/ruby/spec/pb/health/checker_spec.rb +23 -37
- 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/nanopb/pb.h +547 -0
- data/third_party/nanopb/pb_common.c +97 -0
- data/third_party/nanopb/pb_common.h +42 -0
- data/third_party/nanopb/pb_decode.c +1319 -0
- data/third_party/nanopb/pb_decode.h +149 -0
- data/third_party/nanopb/pb_encode.c +690 -0
- data/third_party/nanopb/pb_encode.h +154 -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 +504 -20
- data/Rakefile +0 -63
- data/src/ruby/pb/grpc/health/v1alpha/health.rb +0 -29
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
|
|
@@ -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 */
|