grpc 1.0.1 → 1.1.2
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 +3696 -867
- data/etc/roots.pem +39 -111
- data/include/grpc/byte_buffer.h +64 -1
- data/include/grpc/census.h +40 -96
- data/include/grpc/compression.h +2 -1
- data/include/grpc/grpc.h +42 -7
- data/include/grpc/grpc_posix.h +8 -5
- data/include/grpc/impl/codegen/atm.h +3 -0
- data/include/grpc/impl/codegen/atm_gcc_atomic.h +2 -0
- data/include/grpc/impl/codegen/atm_gcc_sync.h +8 -0
- data/include/grpc/impl/codegen/atm_windows.h +4 -0
- data/include/grpc/impl/codegen/byte_buffer_reader.h +4 -4
- data/include/grpc/impl/codegen/compression_types.h +1 -1
- data/include/grpc/impl/codegen/connectivity_state.h +2 -0
- data/include/grpc/impl/codegen/exec_ctx_fwd.h +41 -0
- data/include/grpc/impl/codegen/gpr_slice.h +84 -0
- data/include/grpc/impl/codegen/{alloc.h → gpr_types.h} +30 -29
- data/include/grpc/impl/codegen/grpc_types.h +91 -9
- data/include/grpc/impl/codegen/port_platform.h +25 -92
- data/include/grpc/impl/codegen/slice.h +54 -97
- data/include/grpc/impl/codegen/sync.h +0 -253
- data/include/grpc/module.modulemap +0 -2
- data/include/grpc/slice.h +132 -0
- data/include/grpc/{impl/codegen/slice_buffer.h → slice_buffer.h} +22 -39
- data/include/grpc/support/alloc.h +40 -1
- data/include/grpc/support/log.h +80 -1
- data/include/grpc/support/log_windows.h +2 -0
- data/include/grpc/support/string_util.h +1 -1
- data/include/grpc/support/sync.h +252 -0
- data/include/grpc/support/time.h +67 -1
- data/src/boringssl/err_data.c +639 -627
- data/src/core/ext/census/base_resources.c +71 -0
- data/src/core/ext/census/base_resources.h +39 -0
- data/src/core/ext/census/gen/census.pb.c +26 -29
- data/src/core/ext/census/gen/census.pb.h +68 -67
- data/src/core/ext/census/gen/trace_context.pb.c +81 -0
- data/src/core/ext/census/gen/trace_context.pb.h +99 -0
- data/src/core/ext/census/grpc_filter.c +22 -16
- data/src/core/ext/census/grpc_plugin.c +2 -1
- data/src/core/ext/census/initialize.c +16 -4
- data/src/core/ext/census/mlog.h +1 -1
- data/src/core/ext/census/placeholders.c +0 -45
- data/src/core/ext/census/resource.c +312 -0
- data/src/core/ext/census/resource.h +63 -0
- data/src/core/ext/census/trace_context.c +86 -0
- data/src/core/ext/census/trace_context.h +68 -0
- data/src/core/ext/census/tracing.c +8 -2
- data/src/core/ext/{client_config → client_channel}/channel_connectivity.c +8 -4
- data/src/core/ext/client_channel/client_channel.c +1218 -0
- data/src/core/ext/{client_config → client_channel}/client_channel.h +8 -11
- data/src/core/ext/{client_config → client_channel}/client_channel_factory.c +33 -3
- data/src/core/ext/{client_config → client_channel}/client_channel_factory.h +15 -8
- data/src/core/ext/{client_config/client_config_plugin.c → client_channel/client_channel_plugin.c} +16 -15
- data/src/core/ext/{client_config → client_channel}/connector.c +1 -1
- data/src/core/ext/{client_config → client_channel}/connector.h +5 -8
- data/{include/grpc/support/slice_buffer.h → src/core/ext/client_channel/default_initial_connect_string.c} +4 -5
- data/src/core/ext/client_channel/http_connect_handshaker.c +399 -0
- data/src/core/ext/client_channel/http_connect_handshaker.h +52 -0
- data/src/core/ext/{client_config → client_channel}/initial_connect_string.c +6 -7
- data/src/core/ext/{client_config → client_channel}/initial_connect_string.h +10 -10
- data/src/core/ext/{client_config → client_channel}/lb_policy.c +11 -11
- data/src/core/ext/{client_config → client_channel}/lb_policy.h +68 -27
- data/src/core/ext/client_channel/lb_policy_factory.c +163 -0
- data/src/core/ext/{client_config → client_channel}/lb_policy_factory.h +64 -9
- data/src/core/ext/{client_config → client_channel}/lb_policy_registry.c +6 -4
- data/src/core/ext/{client_config → client_channel}/lb_policy_registry.h +4 -4
- data/src/core/ext/{client_config → client_channel}/parse_address.c +21 -14
- data/src/core/ext/{client_config → client_channel}/parse_address.h +8 -10
- data/src/core/ext/{client_config → client_channel}/resolver.c +3 -4
- data/src/core/ext/{client_config → client_channel}/resolver.h +11 -15
- data/src/core/ext/{client_config → client_channel}/resolver_factory.c +4 -3
- data/src/core/ext/{client_config → client_channel}/resolver_factory.h +13 -11
- data/src/core/ext/{client_config → client_channel}/resolver_registry.c +54 -34
- data/src/core/ext/{client_config → client_channel}/resolver_registry.h +21 -8
- data/src/core/ext/{client_config → client_channel}/subchannel.c +208 -119
- data/src/core/ext/{client_config → client_channel}/subchannel.h +21 -11
- data/src/core/ext/{client_config → client_channel}/subchannel_index.c +6 -17
- data/src/core/ext/{client_config → client_channel}/subchannel_index.h +7 -7
- data/src/core/ext/{client_config → client_channel}/uri_parser.c +21 -28
- data/src/core/ext/{client_config → client_channel}/uri_parser.h +3 -3
- data/src/core/ext/lb_policy/grpclb/grpclb.c +1406 -0
- data/src/core/ext/lb_policy/grpclb/grpclb.h +44 -0
- data/src/core/ext/lb_policy/grpclb/load_balancer_api.c +117 -37
- data/src/core/ext/lb_policy/grpclb/load_balancer_api.h +31 -12
- data/src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c +6 -36
- data/src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h +22 -42
- data/src/core/ext/lb_policy/pick_first/pick_first.c +64 -46
- data/src/core/ext/lb_policy/round_robin/round_robin.c +324 -160
- data/src/core/ext/load_reporting/load_reporting.c +7 -56
- data/src/core/ext/load_reporting/load_reporting.h +41 -28
- data/src/core/ext/load_reporting/load_reporting_filter.c +132 -42
- data/src/core/ext/load_reporting/load_reporting_filter.h +1 -0
- data/src/core/ext/resolver/dns/native/dns_resolver.c +88 -80
- data/src/core/ext/resolver/sockaddr/sockaddr_resolver.c +57 -102
- data/src/core/ext/transport/chttp2/alpn/alpn.c +1 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.c +253 -0
- data/src/core/{lib/iomgr/ev_poll_and_epoll_posix.h → ext/transport/chttp2/client/chttp2_connector.h} +5 -5
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.c +31 -160
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c +5 -5
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.c +44 -243
- data/src/core/ext/transport/chttp2/server/chttp2_server.c +342 -0
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +47 -0
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.c +11 -124
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c +20 -9
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c +28 -236
- data/src/core/ext/transport/chttp2/transport/bin_decoder.c +31 -27
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +5 -4
- data/src/core/ext/transport/chttp2/transport/bin_encoder.c +25 -22
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +8 -7
- data/src/core/ext/transport/chttp2/transport/chttp2_plugin.c +0 -3
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.c +1345 -1521
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +3 -1
- data/src/core/ext/transport/chttp2/transport/frame.h +3 -5
- data/src/core/ext/transport/chttp2/transport/frame_data.c +50 -47
- data/src/core/ext/transport/chttp2/transport/frame_data.h +8 -9
- data/src/core/ext/transport/chttp2/transport/frame_goaway.c +19 -21
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +9 -8
- data/src/core/ext/transport/chttp2/transport/frame_ping.c +13 -12
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +6 -6
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.c +31 -19
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +8 -7
- data/src/core/ext/transport/chttp2/transport/frame_settings.c +22 -25
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +9 -8
- data/src/core/ext/transport/chttp2/transport/frame_window_update.c +26 -18
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +5 -6
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.c +68 -58
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +8 -5
- data/src/core/ext/transport/chttp2/transport/hpack_parser.c +327 -214
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +14 -9
- data/src/core/ext/transport/chttp2/transport/hpack_table.c +24 -19
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +9 -6
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.c +2 -2
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +1 -1
- data/src/core/ext/transport/chttp2/transport/internal.h +284 -436
- data/src/core/ext/transport/chttp2/transport/parsing.c +355 -590
- data/src/core/ext/transport/chttp2/transport/stream_lists.c +36 -309
- data/src/core/ext/transport/chttp2/transport/stream_map.c +13 -34
- data/src/core/ext/transport/chttp2/transport/stream_map.h +3 -4
- data/src/core/ext/transport/chttp2/transport/writing.c +174 -286
- data/src/core/lib/channel/channel_args.c +70 -13
- data/src/core/lib/channel/channel_args.h +28 -2
- data/src/core/lib/channel/channel_stack.c +77 -28
- data/src/core/lib/channel/channel_stack.h +61 -23
- data/src/core/lib/channel/channel_stack_builder.c +33 -25
- data/src/core/lib/channel/channel_stack_builder.h +17 -8
- data/src/core/lib/channel/compress_filter.c +52 -36
- data/src/core/lib/channel/connected_channel.c +20 -12
- data/src/core/lib/channel/connected_channel.h +2 -1
- data/src/core/lib/channel/context.h +13 -1
- data/src/core/lib/channel/deadline_filter.c +344 -0
- data/src/core/lib/channel/deadline_filter.h +99 -0
- data/src/core/lib/channel/handshaker.c +240 -0
- data/src/core/lib/channel/handshaker.h +164 -0
- data/src/core/lib/{security/credentials/google_default/credentials_windows.c → channel/handshaker_factory.c} +16 -23
- data/src/core/lib/channel/handshaker_factory.h +66 -0
- data/src/core/lib/channel/handshaker_registry.c +113 -0
- data/src/core/{ext/client_config/client_config.h → lib/channel/handshaker_registry.h} +26 -16
- data/src/core/lib/channel/http_client_filter.c +248 -46
- data/src/core/lib/channel/http_client_filter.h +3 -0
- data/src/core/lib/channel/http_server_filter.c +136 -24
- data/src/core/lib/channel/message_size_filter.c +261 -0
- data/src/core/lib/channel/message_size_filter.h +39 -0
- data/src/core/lib/compression/message_compress.c +43 -37
- data/src/core/lib/compression/message_compress.h +7 -5
- data/src/core/lib/http/format_request.c +26 -11
- data/src/core/lib/http/format_request.h +7 -5
- data/src/core/lib/http/httpcli.c +45 -27
- data/src/core/lib/http/httpcli.h +4 -4
- data/src/core/lib/http/httpcli_security_connector.c +56 -46
- data/src/core/lib/http/parser.c +17 -14
- data/src/core/lib/http/parser.h +4 -2
- data/src/core/lib/iomgr/closure.c +49 -7
- data/src/core/lib/iomgr/closure.h +56 -14
- data/src/core/lib/iomgr/combiner.c +422 -0
- data/src/core/lib/iomgr/combiner.h +64 -0
- data/src/core/lib/iomgr/endpoint.c +8 -2
- data/src/core/lib/iomgr/endpoint.h +17 -7
- data/src/core/lib/iomgr/endpoint_pair.h +3 -2
- data/src/core/lib/iomgr/endpoint_pair_posix.c +9 -8
- data/src/core/{ext/client_config/lb_policy_factory.c → lib/iomgr/endpoint_pair_uv.c} +18 -13
- data/src/core/lib/iomgr/endpoint_pair_windows.c +7 -6
- data/src/core/lib/iomgr/error.c +72 -6
- data/src/core/lib/iomgr/error.h +30 -3
- data/src/core/lib/iomgr/ev_epoll_linux.c +500 -382
- data/src/core/lib/iomgr/ev_epoll_linux.h +3 -2
- data/src/core/lib/iomgr/ev_poll_posix.c +317 -30
- data/src/core/lib/iomgr/ev_poll_posix.h +1 -0
- data/src/core/lib/iomgr/ev_posix.c +26 -5
- data/src/core/lib/iomgr/ev_posix.h +12 -1
- data/src/core/lib/iomgr/exec_ctx.c +27 -94
- data/src/core/lib/iomgr/exec_ctx.h +19 -22
- data/src/core/lib/iomgr/executor.c +29 -8
- data/src/core/lib/iomgr/executor.h +2 -4
- data/src/core/lib/iomgr/iocp_windows.c +3 -4
- data/src/core/lib/iomgr/iomgr.c +14 -10
- data/src/core/lib/iomgr/iomgr.h +6 -2
- data/src/core/lib/iomgr/iomgr_posix.c +2 -2
- data/src/core/lib/iomgr/iomgr_uv.c +49 -0
- data/src/core/lib/iomgr/iomgr_windows.c +2 -2
- data/src/core/lib/iomgr/load_file.c +3 -3
- data/src/core/lib/iomgr/load_file.h +2 -2
- data/src/core/lib/iomgr/network_status_tracker.c +1 -1
- data/src/core/lib/iomgr/pollset_set_uv.c +62 -0
- data/src/core/lib/iomgr/pollset_set_windows.c +3 -3
- data/src/core/lib/iomgr/pollset_uv.c +142 -0
- data/src/core/lib/iomgr/pollset_uv.h +42 -0
- data/src/core/lib/iomgr/pollset_windows.c +5 -6
- data/src/core/lib/iomgr/port.h +129 -0
- data/src/core/lib/iomgr/resolve_address.h +2 -1
- data/src/core/lib/iomgr/resolve_address_posix.c +14 -13
- data/src/core/lib/iomgr/resolve_address_uv.c +233 -0
- data/src/core/lib/iomgr/resolve_address_windows.c +14 -12
- data/src/core/lib/iomgr/resource_quota.c +832 -0
- data/src/core/lib/iomgr/resource_quota.h +159 -0
- data/src/core/lib/iomgr/sockaddr.h +10 -2
- data/src/core/lib/iomgr/sockaddr_utils.c +63 -36
- data/src/core/lib/iomgr/sockaddr_utils.h +14 -14
- data/src/core/lib/iomgr/socket_mutator.c +98 -0
- data/src/core/lib/iomgr/socket_mutator.h +80 -0
- data/src/core/lib/iomgr/socket_utils.h +42 -0
- data/src/core/lib/iomgr/socket_utils_common_posix.c +28 -13
- data/src/core/lib/iomgr/socket_utils_linux.c +11 -5
- data/src/core/lib/iomgr/socket_utils_posix.c +10 -7
- data/src/core/lib/iomgr/socket_utils_posix.h +11 -4
- data/src/core/lib/iomgr/socket_utils_uv.c +49 -0
- data/src/core/lib/iomgr/socket_utils_windows.c +52 -0
- data/src/core/lib/iomgr/socket_windows.c +14 -6
- data/src/core/lib/iomgr/socket_windows.h +1 -0
- data/src/core/lib/iomgr/tcp_client.h +8 -2
- data/src/core/lib/iomgr/tcp_client_posix.c +131 -82
- data/src/core/lib/iomgr/tcp_client_posix.h +45 -0
- data/src/core/lib/iomgr/tcp_client_uv.c +190 -0
- data/src/core/lib/iomgr/tcp_client_windows.c +54 -30
- data/src/core/lib/iomgr/tcp_posix.c +135 -56
- data/src/core/lib/iomgr/tcp_posix.h +2 -2
- data/src/core/lib/iomgr/tcp_server.h +14 -6
- data/src/core/lib/iomgr/tcp_server_posix.c +154 -118
- data/src/core/lib/iomgr/tcp_server_uv.c +388 -0
- data/src/core/lib/iomgr/tcp_server_windows.c +127 -100
- data/src/core/lib/iomgr/tcp_uv.c +367 -0
- data/src/core/lib/iomgr/tcp_uv.h +59 -0
- data/src/core/lib/iomgr/tcp_windows.c +65 -48
- data/src/core/lib/iomgr/tcp_windows.h +3 -1
- data/src/core/lib/iomgr/timer.h +21 -21
- data/src/core/lib/iomgr/{timer.c → timer_generic.c} +15 -10
- data/src/core/lib/iomgr/timer_generic.h +49 -0
- data/src/core/lib/iomgr/timer_heap.c +6 -0
- data/src/core/lib/iomgr/timer_uv.c +99 -0
- data/src/core/lib/iomgr/timer_uv.h +47 -0
- data/src/core/lib/iomgr/udp_server.c +116 -98
- data/src/core/lib/iomgr/udp_server.h +5 -3
- data/src/core/lib/iomgr/unix_sockets_posix.c +14 -6
- data/src/core/lib/iomgr/unix_sockets_posix.h +6 -5
- data/src/core/lib/iomgr/unix_sockets_posix_noop.c +4 -4
- data/src/core/lib/iomgr/wakeup_fd_cv.c +118 -0
- data/src/core/lib/iomgr/wakeup_fd_cv.h +80 -0
- data/src/core/lib/iomgr/wakeup_fd_eventfd.c +3 -3
- data/src/core/lib/iomgr/wakeup_fd_nospecial.c +3 -3
- data/src/core/lib/iomgr/wakeup_fd_pipe.c +12 -6
- data/src/core/lib/iomgr/wakeup_fd_posix.c +34 -5
- data/src/core/lib/iomgr/wakeup_fd_posix.h +5 -0
- data/src/core/lib/iomgr/workqueue.h +12 -20
- data/src/core/{ext/client_config/client_config.c → lib/iomgr/workqueue_uv.c} +24 -33
- data/{include/grpc/support/slice.h → src/core/lib/iomgr/workqueue_uv.h} +4 -6
- data/src/core/lib/iomgr/workqueue_windows.c +9 -8
- data/src/core/lib/json/json.c +3 -3
- data/src/core/lib/json/json.h +11 -11
- data/src/core/lib/json/json_reader.c +9 -5
- data/src/core/lib/profiling/basic_timers.c +10 -1
- data/src/core/lib/profiling/timers.h +2 -0
- data/src/core/lib/security/context/security_context.c +13 -3
- data/src/core/lib/security/context/security_context.h +20 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.c +28 -14
- data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -2
- data/src/core/lib/security/credentials/credentials.c +48 -19
- data/src/core/lib/security/credentials/credentials.h +36 -19
- data/src/core/lib/security/credentials/credentials_metadata.c +11 -8
- data/src/core/lib/security/credentials/fake/fake_credentials.c +15 -11
- data/src/core/lib/security/credentials/google_default/{credentials_posix.c → credentials_generic.c} +7 -14
- data/src/core/lib/security/credentials/google_default/google_default_credentials.c +33 -21
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +14 -0
- data/src/core/lib/security/credentials/iam/iam_credentials.c +3 -2
- data/src/core/lib/security/credentials/jwt/json_token.c +1 -0
- data/src/core/lib/security/credentials/jwt/json_token.h +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_credentials.c +54 -19
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.c +129 -79
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +9 -6
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.c +63 -28
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -1
- data/src/core/lib/security/credentials/plugin/plugin_credentials.c +32 -11
- data/src/core/lib/security/credentials/ssl/ssl_credentials.c +13 -9
- data/src/core/lib/security/transport/client_auth_filter.c +33 -27
- data/src/core/lib/security/transport/secure_endpoint.c +93 -68
- data/src/core/lib/security/transport/secure_endpoint.h +2 -2
- data/src/core/lib/security/transport/security_connector.c +133 -168
- data/src/core/lib/security/transport/security_connector.h +31 -46
- data/src/core/lib/security/transport/security_handshaker.c +501 -0
- data/src/core/lib/security/transport/{handshake.h → security_handshaker.h} +10 -10
- data/src/core/lib/security/transport/server_auth_filter.c +50 -38
- data/src/core/lib/security/util/b64.c +11 -8
- data/src/core/lib/security/util/b64.h +5 -4
- data/src/core/lib/slice/percent_encoding.c +182 -0
- data/src/core/lib/slice/percent_encoding.h +78 -0
- data/src/core/lib/{support → slice}/slice.c +81 -50
- data/src/core/lib/{support → slice}/slice_buffer.c +78 -60
- data/src/core/lib/slice/slice_internal.h +49 -0
- data/src/core/lib/slice/slice_string_helpers.c +90 -0
- data/src/core/lib/{iomgr/workqueue_posix.h → slice/slice_string_helpers.h} +18 -18
- data/src/core/lib/support/backoff.c +24 -13
- data/src/core/lib/support/backoff.h +5 -2
- data/src/core/lib/support/env.h +0 -2
- data/src/core/lib/support/log.c +5 -4
- data/src/core/lib/support/log_linux.c +0 -1
- data/src/core/lib/support/log_posix.c +1 -1
- data/src/core/lib/support/mpscq.c +83 -0
- data/src/core/lib/support/mpscq.h +65 -0
- data/src/core/lib/support/string.c +58 -49
- data/src/core/lib/support/string.h +11 -8
- data/src/core/lib/support/subprocess_posix.c +5 -2
- data/src/core/lib/support/thd.c +1 -1
- data/src/core/lib/support/time.c +43 -79
- data/src/core/lib/support/time_posix.c +1 -1
- data/src/core/lib/support/tmpfile.h +0 -2
- data/src/core/lib/surface/alarm.c +4 -1
- data/src/core/lib/surface/byte_buffer.c +17 -11
- data/src/core/lib/surface/byte_buffer_reader.c +23 -15
- data/src/core/lib/surface/call.c +294 -276
- data/src/core/lib/surface/call.h +24 -9
- data/src/core/lib/surface/call_log_batch.c +5 -3
- data/src/core/lib/surface/channel.c +127 -111
- data/src/core/lib/surface/channel.h +14 -5
- data/src/core/lib/surface/channel_init.c +1 -1
- data/src/core/lib/surface/channel_init.h +10 -1
- data/src/core/lib/surface/channel_ping.c +7 -6
- data/src/core/lib/surface/completion_queue.c +154 -18
- data/src/core/lib/surface/completion_queue.h +5 -0
- data/src/core/lib/surface/init.c +40 -6
- data/src/core/lib/surface/init.h +1 -0
- data/src/core/lib/surface/init_secure.c +5 -2
- data/src/core/lib/surface/lame_client.c +28 -18
- data/src/core/lib/surface/server.c +134 -87
- data/src/core/lib/surface/server.h +8 -0
- data/src/core/lib/surface/validate_metadata.c +1 -1
- data/src/core/lib/surface/version.c +3 -1
- data/src/core/lib/transport/byte_stream.c +7 -4
- data/src/core/lib/transport/byte_stream.h +6 -10
- data/src/core/lib/transport/connectivity_state.c +21 -12
- data/src/core/lib/transport/connectivity_state.h +4 -1
- data/src/core/lib/transport/mdstr_hash_table.c +118 -0
- data/src/core/lib/transport/mdstr_hash_table.h +77 -0
- data/src/core/lib/transport/metadata.c +83 -60
- data/src/core/lib/transport/metadata.h +41 -23
- data/src/core/lib/transport/metadata_batch.c +17 -11
- data/src/core/lib/transport/metadata_batch.h +20 -6
- data/src/core/lib/transport/pid_controller.c +57 -0
- data/src/core/lib/transport/pid_controller.h +64 -0
- data/src/core/lib/transport/service_config.c +251 -0
- data/src/core/lib/transport/service_config.h +71 -0
- data/src/core/lib/transport/static_metadata.c +18 -16
- data/src/core/lib/transport/static_metadata.h +113 -107
- data/src/core/{ext/transport/chttp2 → lib}/transport/timeout_encoding.c +3 -3
- data/src/core/{ext/transport/chttp2 → lib}/transport/timeout_encoding.h +7 -7
- data/src/core/lib/transport/transport.c +84 -23
- data/src/core/lib/transport/transport.h +53 -8
- data/src/core/lib/transport/transport_impl.h +3 -0
- data/src/core/lib/transport/transport_op_string.c +92 -20
- data/src/core/lib/tsi/ssl_transport_security.c +3 -1
- data/src/core/plugin_registry/grpc_plugin_registry.c +8 -4
- data/src/ruby/ext/grpc/extconf.rb +0 -1
- data/src/ruby/ext/grpc/rb_byte_buffer.c +8 -7
- data/src/ruby/ext/grpc/rb_call.c +15 -5
- data/src/ruby/ext/grpc/rb_channel.c +1 -1
- data/src/ruby/ext/grpc/rb_compression_options.c +466 -0
- data/src/{core/ext/client_config/default_initial_connect_string.c → ruby/ext/grpc/rb_compression_options.h} +10 -5
- data/src/ruby/ext/grpc/rb_grpc.c +3 -1
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +198 -190
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +306 -294
- data/src/ruby/ext/grpc/rb_server.c +18 -12
- data/src/ruby/lib/grpc/errors.rb +154 -2
- data/src/ruby/lib/grpc/generic/active_call.rb +144 -63
- data/src/ruby/lib/grpc/generic/bidi_call.rb +18 -2
- data/src/ruby/lib/grpc/generic/client_stub.rb +7 -5
- data/src/ruby/lib/grpc/generic/rpc_desc.rb +39 -13
- data/src/ruby/lib/grpc/generic/rpc_server.rb +51 -24
- data/src/ruby/lib/grpc/generic/service.rb +3 -2
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/checker.rb +3 -1
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +7 -0
- data/src/ruby/pb/test/client.rb +307 -7
- data/src/ruby/pb/test/server.rb +26 -1
- data/src/ruby/spec/compression_options_spec.rb +164 -0
- data/src/ruby/spec/error_sanity_spec.rb +64 -0
- data/src/ruby/spec/generic/active_call_spec.rb +290 -12
- data/src/ruby/spec/generic/client_stub_spec.rb +91 -41
- data/src/ruby/spec/generic/rpc_desc_spec.rb +36 -16
- data/src/ruby/spec/generic/rpc_server_pool_spec.rb +22 -28
- data/src/ruby/spec/generic/rpc_server_spec.rb +6 -6
- data/src/ruby/spec/pb/health/checker_spec.rb +27 -19
- data/src/ruby/spec/spec_helper.rb +2 -0
- data/third_party/boringssl/crypto/aes/aes.c +12 -12
- data/third_party/boringssl/crypto/aes/mode_wrappers.c +6 -2
- data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +28 -13
- data/third_party/boringssl/crypto/asn1/a_gentm.c +2 -0
- data/third_party/boringssl/crypto/asn1/a_object.c +7 -3
- data/third_party/boringssl/crypto/asn1/a_strnid.c +1 -0
- data/third_party/boringssl/crypto/asn1/a_time.c +0 -11
- data/third_party/boringssl/crypto/asn1/a_type.c +0 -2
- data/third_party/boringssl/crypto/asn1/a_utctm.c +1 -30
- data/third_party/boringssl/crypto/asn1/asn1_lib.c +56 -76
- data/third_party/boringssl/crypto/asn1/asn1_locl.h +0 -10
- data/third_party/boringssl/crypto/asn1/asn1_par.c +0 -322
- data/third_party/boringssl/crypto/asn1/f_enum.c +1 -108
- data/third_party/boringssl/crypto/asn1/f_int.c +1 -106
- data/third_party/boringssl/crypto/asn1/f_string.c +1 -106
- data/third_party/boringssl/crypto/asn1/tasn_dec.c +10 -14
- data/third_party/boringssl/crypto/asn1/tasn_enc.c +17 -11
- data/third_party/boringssl/crypto/asn1/tasn_typ.c +29 -42
- data/third_party/boringssl/crypto/asn1/tasn_utl.c +1 -1
- data/third_party/boringssl/crypto/base64/base64.c +249 -285
- data/third_party/boringssl/crypto/bio/bio.c +13 -23
- data/third_party/boringssl/crypto/bio/bio_mem.c +3 -2
- data/third_party/boringssl/crypto/bio/connect.c +12 -3
- data/third_party/boringssl/crypto/bio/fd.c +22 -15
- data/third_party/boringssl/crypto/bio/file.c +2 -38
- data/third_party/boringssl/crypto/bio/hexdump.c +1 -2
- data/third_party/boringssl/crypto/bio/internal.h +3 -0
- data/third_party/boringssl/crypto/bio/pair.c +1 -1
- data/third_party/boringssl/crypto/bio/socket.c +10 -2
- data/third_party/boringssl/crypto/bio/socket_helper.c +2 -2
- data/third_party/boringssl/crypto/bn/asm/x86_64-gcc.c +0 -8
- data/third_party/boringssl/crypto/bn/bn.c +38 -0
- data/third_party/boringssl/crypto/bn/cmp.c +25 -0
- data/third_party/boringssl/crypto/bn/convert.c +73 -76
- data/third_party/boringssl/crypto/bn/div.c +136 -70
- data/third_party/boringssl/crypto/bn/exponentiation.c +86 -381
- data/third_party/boringssl/crypto/bn/gcd.c +213 -296
- data/third_party/boringssl/crypto/bn/generic.c +0 -80
- data/third_party/boringssl/crypto/bn/internal.h +15 -3
- data/third_party/boringssl/crypto/bn/montgomery.c +57 -207
- data/third_party/boringssl/crypto/bn/montgomery_inv.c +160 -0
- data/third_party/boringssl/crypto/bn/mul.c +2 -1
- data/third_party/boringssl/crypto/bn/prime.c +24 -8
- data/third_party/boringssl/crypto/bn/random.c +47 -33
- data/third_party/boringssl/crypto/bn/sqrt.c +4 -5
- data/third_party/boringssl/crypto/buf/buf.c +25 -21
- data/third_party/boringssl/crypto/bytestring/ber.c +1 -0
- data/third_party/boringssl/crypto/bytestring/cbb.c +50 -22
- data/third_party/boringssl/crypto/bytestring/cbs.c +28 -4
- data/third_party/boringssl/crypto/chacha/{chacha_generic.c → chacha.c} +56 -29
- data/third_party/boringssl/crypto/cipher/aead.c +11 -22
- data/third_party/boringssl/crypto/cipher/cipher.c +2 -2
- data/third_party/boringssl/crypto/cipher/e_aes.c +53 -103
- data/third_party/boringssl/crypto/cipher/e_chacha20poly1305.c +2 -8
- data/third_party/boringssl/crypto/cipher/e_des.c +3 -5
- data/third_party/boringssl/crypto/cipher/e_null.c +1 -1
- data/third_party/boringssl/crypto/cipher/e_rc2.c +1 -1
- data/third_party/boringssl/crypto/cipher/e_rc4.c +1 -1
- data/third_party/boringssl/crypto/cipher/e_ssl3.c +3 -63
- data/third_party/boringssl/crypto/cipher/e_tls.c +12 -83
- data/third_party/boringssl/crypto/cipher/internal.h +8 -10
- data/third_party/boringssl/crypto/cipher/tls_cbc.c +69 -40
- data/third_party/boringssl/crypto/conf/conf.c +2 -1
- data/third_party/boringssl/crypto/cpu-aarch64-linux.c +61 -0
- data/third_party/boringssl/crypto/cpu-arm-linux.c +360 -0
- data/third_party/boringssl/crypto/cpu-arm.c +0 -161
- data/third_party/boringssl/crypto/cpu-intel.c +5 -3
- data/third_party/boringssl/{ssl/test/scoped_types.h → crypto/cpu-ppc64le.c} +21 -9
- data/third_party/boringssl/crypto/crypto.c +29 -7
- data/third_party/boringssl/crypto/curve25519/curve25519.c +284 -242
- data/third_party/boringssl/crypto/curve25519/internal.h +64 -0
- data/third_party/boringssl/crypto/curve25519/spake25519.c +464 -0
- data/third_party/boringssl/crypto/curve25519/x25519-x86_64.c +21 -0
- data/third_party/boringssl/crypto/dh/check.c +22 -6
- data/third_party/boringssl/crypto/dh/dh.c +45 -21
- data/third_party/boringssl/crypto/dh/dh_asn1.c +96 -20
- data/third_party/boringssl/crypto/dh/params.c +30 -78
- data/third_party/boringssl/crypto/digest/digest.c +3 -3
- data/third_party/boringssl/crypto/dsa/dsa.c +59 -29
- data/third_party/boringssl/crypto/dsa/dsa_asn1.c +4 -0
- data/third_party/boringssl/crypto/ec/ec.c +84 -140
- data/third_party/boringssl/crypto/ec/ec_asn1.c +82 -52
- data/third_party/boringssl/crypto/ec/ec_key.c +15 -15
- data/third_party/boringssl/crypto/ec/ec_montgomery.c +87 -50
- data/third_party/boringssl/crypto/ec/internal.h +12 -36
- data/third_party/boringssl/crypto/ec/oct.c +11 -11
- data/third_party/boringssl/crypto/ec/p224-64.c +59 -116
- data/third_party/boringssl/crypto/ec/p256-64.c +88 -163
- data/third_party/boringssl/crypto/ec/p256-x86_64.c +46 -58
- data/third_party/boringssl/crypto/ec/simple.c +81 -201
- data/third_party/boringssl/crypto/ec/util-64.c +0 -74
- data/third_party/boringssl/crypto/ecdh/ecdh.c +7 -1
- data/third_party/boringssl/crypto/ecdsa/ecdsa.c +28 -46
- data/third_party/boringssl/crypto/ecdsa/ecdsa_asn1.c +1 -0
- data/third_party/boringssl/crypto/engine/engine.c +1 -1
- data/third_party/boringssl/crypto/err/err.c +3 -3
- data/third_party/boringssl/crypto/evp/evp.c +14 -59
- data/third_party/boringssl/crypto/evp/evp_asn1.c +144 -87
- data/third_party/boringssl/crypto/evp/evp_ctx.c +7 -7
- data/third_party/boringssl/crypto/evp/internal.h +4 -46
- data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +8 -157
- data/third_party/boringssl/crypto/evp/p_ec.c +1 -1
- data/third_party/boringssl/crypto/evp/p_ec_asn1.c +22 -170
- data/third_party/boringssl/crypto/evp/p_rsa.c +1 -1
- data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +10 -548
- data/third_party/boringssl/crypto/evp/print.c +520 -0
- data/third_party/boringssl/crypto/ex_data.c +4 -6
- data/third_party/boringssl/crypto/hkdf/hkdf.c +38 -17
- data/third_party/boringssl/crypto/hmac/hmac.c +6 -6
- data/third_party/boringssl/crypto/internal.h +57 -77
- data/third_party/boringssl/crypto/lhash/lhash.c +6 -10
- data/third_party/boringssl/crypto/md4/md4.c +9 -0
- data/third_party/boringssl/crypto/mem.c +19 -19
- data/third_party/boringssl/crypto/modes/cfb.c +5 -6
- data/third_party/boringssl/crypto/modes/ctr.c +10 -18
- data/third_party/boringssl/crypto/modes/gcm.c +100 -66
- data/third_party/boringssl/crypto/modes/internal.h +15 -27
- data/third_party/boringssl/crypto/modes/ofb.c +9 -22
- data/third_party/boringssl/crypto/newhope/error_correction.c +131 -0
- data/third_party/boringssl/crypto/newhope/internal.h +71 -0
- data/third_party/boringssl/crypto/newhope/newhope.c +174 -0
- data/third_party/boringssl/crypto/newhope/ntt.c +148 -0
- data/third_party/boringssl/crypto/newhope/poly.c +183 -0
- data/third_party/boringssl/crypto/newhope/precomp.c +306 -0
- data/third_party/boringssl/crypto/newhope/reduce.c +42 -0
- data/third_party/boringssl/crypto/obj/obj.c +111 -135
- data/third_party/boringssl/crypto/obj/obj_dat.h +4 -10
- data/third_party/boringssl/crypto/pem/pem_lib.c +6 -43
- data/third_party/boringssl/crypto/pem/pem_pkey.c +10 -19
- data/third_party/boringssl/crypto/pkcs8/p5_pbe.c +1 -0
- data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +2 -1
- data/third_party/boringssl/crypto/pkcs8/p8_pkey.c +2 -2
- data/third_party/boringssl/crypto/pkcs8/pkcs8.c +95 -87
- data/third_party/boringssl/crypto/{test/test_util.h → poly1305/internal.h} +15 -10
- data/third_party/boringssl/crypto/poly1305/poly1305.c +8 -15
- data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +1 -0
- data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +3 -3
- data/third_party/boringssl/crypto/rand/deterministic.c +47 -0
- data/third_party/boringssl/crypto/rand/rand.c +4 -1
- data/third_party/boringssl/crypto/rand/urandom.c +5 -7
- data/third_party/boringssl/crypto/rand/windows.c +5 -8
- data/third_party/boringssl/crypto/rc4/rc4.c +24 -209
- data/third_party/boringssl/crypto/refcount_lock.c +2 -2
- data/third_party/boringssl/crypto/rsa/blinding.c +74 -232
- data/third_party/boringssl/crypto/rsa/internal.h +5 -13
- data/third_party/boringssl/crypto/rsa/padding.c +64 -63
- data/third_party/boringssl/crypto/rsa/rsa.c +50 -28
- data/third_party/boringssl/crypto/rsa/rsa_asn1.c +8 -16
- data/third_party/boringssl/crypto/rsa/rsa_impl.c +134 -122
- data/third_party/boringssl/crypto/sha/sha256.c +2 -2
- data/third_party/boringssl/crypto/sha/sha512.c +7 -7
- data/third_party/boringssl/crypto/stack/stack.c +13 -22
- data/third_party/boringssl/crypto/thread.c +21 -12
- data/third_party/boringssl/crypto/thread_none.c +6 -2
- data/third_party/boringssl/crypto/thread_pthread.c +16 -7
- data/third_party/boringssl/crypto/thread_win.c +38 -85
- data/third_party/boringssl/crypto/x509/a_sign.c +3 -3
- data/third_party/boringssl/crypto/x509/a_strex.c +1 -1
- data/third_party/boringssl/crypto/x509/a_verify.c +2 -2
- data/third_party/boringssl/crypto/{evp → x509}/algorithm.c +37 -53
- data/third_party/boringssl/crypto/x509/asn1_gen.c +1 -2
- data/third_party/boringssl/crypto/x509/by_dir.c +6 -6
- data/third_party/boringssl/crypto/x509/internal.h +66 -0
- data/third_party/boringssl/crypto/x509/rsa_pss.c +385 -0
- data/third_party/boringssl/crypto/x509/t_x509.c +10 -12
- data/third_party/boringssl/crypto/x509/x509.c +5 -0
- data/third_party/boringssl/crypto/x509/x509_att.c +9 -3
- data/third_party/boringssl/crypto/x509/x509_lu.c +34 -44
- data/third_party/boringssl/crypto/x509/x509_obj.c +19 -2
- data/third_party/boringssl/crypto/x509/x509_r2x.c +9 -5
- data/third_party/boringssl/crypto/x509/x509_set.c +5 -0
- data/third_party/boringssl/crypto/x509/x509_txt.c +5 -0
- data/third_party/boringssl/crypto/x509/x509_vfy.c +63 -32
- data/third_party/boringssl/crypto/x509/x509_vpm.c +29 -18
- data/third_party/boringssl/crypto/x509/x509cset.c +2 -1
- data/third_party/boringssl/crypto/x509/x_crl.c +2 -2
- data/third_party/boringssl/crypto/x509/x_name.c +14 -17
- data/third_party/boringssl/crypto/x509/x_pubkey.c +10 -7
- data/third_party/boringssl/crypto/x509/x_x509.c +67 -6
- data/third_party/boringssl/crypto/x509v3/pcy_cache.c +2 -2
- data/third_party/boringssl/crypto/x509v3/pcy_tree.c +2 -1
- data/third_party/boringssl/crypto/x509v3/v3_conf.c +4 -3
- data/third_party/boringssl/crypto/x509v3/v3_cpols.c +5 -0
- data/third_party/boringssl/crypto/x509v3/v3_prn.c +0 -3
- data/third_party/boringssl/crypto/x509v3/v3_purp.c +2 -2
- data/third_party/boringssl/crypto/x509v3/v3_utl.c +2 -1
- data/third_party/boringssl/include/openssl/aead.h +72 -73
- data/third_party/boringssl/include/openssl/arm_arch.h +0 -6
- data/third_party/boringssl/include/openssl/asn1.h +103 -235
- data/third_party/boringssl/include/openssl/asn1_mac.h +17 -74
- data/third_party/boringssl/include/openssl/asn1t.h +1 -11
- data/third_party/boringssl/include/openssl/base.h +145 -3
- data/third_party/boringssl/include/openssl/base64.h +20 -17
- data/third_party/boringssl/include/openssl/bio.h +59 -34
- data/third_party/boringssl/include/openssl/bn.h +118 -51
- data/third_party/boringssl/include/openssl/buf.h +15 -0
- data/third_party/boringssl/include/openssl/bytestring.h +52 -4
- data/third_party/boringssl/include/openssl/chacha.h +2 -2
- data/third_party/boringssl/include/openssl/cipher.h +18 -1
- data/third_party/boringssl/include/openssl/cmac.h +11 -0
- data/third_party/boringssl/include/openssl/conf.h +13 -2
- data/third_party/boringssl/include/openssl/cpu.h +20 -23
- data/third_party/boringssl/include/openssl/crypto.h +22 -1
- data/third_party/boringssl/include/openssl/curve25519.h +96 -4
- data/third_party/boringssl/include/openssl/dh.h +71 -16
- data/third_party/boringssl/include/openssl/digest.h +38 -11
- data/third_party/boringssl/include/openssl/dsa.h +40 -4
- data/third_party/boringssl/include/openssl/ec.h +44 -18
- data/third_party/boringssl/include/openssl/ec_key.h +27 -6
- data/third_party/boringssl/include/openssl/ecdsa.h +11 -0
- data/third_party/boringssl/include/openssl/engine.h +11 -0
- data/third_party/boringssl/include/openssl/evp.h +52 -88
- data/third_party/boringssl/include/openssl/hkdf.h +24 -4
- data/third_party/boringssl/include/openssl/hmac.h +20 -6
- data/third_party/boringssl/include/openssl/md4.h +4 -0
- data/third_party/boringssl/include/openssl/mem.h +19 -0
- data/third_party/boringssl/include/openssl/newhope.h +158 -0
- data/third_party/boringssl/include/openssl/nid.h +4166 -0
- data/third_party/boringssl/include/openssl/obj.h +31 -3
- data/third_party/boringssl/include/openssl/obj_mac.h +17 -4143
- data/third_party/boringssl/include/openssl/{opensslfeatures.h → opensslconf.h} +3 -3
- data/third_party/boringssl/include/openssl/pem.h +5 -0
- data/third_party/boringssl/include/openssl/pkcs8.h +12 -0
- data/third_party/boringssl/include/openssl/rand.h +6 -0
- data/third_party/boringssl/include/openssl/rc4.h +6 -0
- data/third_party/boringssl/{crypto/dh/internal.h → include/openssl/ripemd.h} +38 -11
- data/third_party/boringssl/include/openssl/rsa.h +127 -65
- data/third_party/boringssl/include/openssl/sha.h +14 -10
- data/third_party/boringssl/include/openssl/ssl.h +561 -275
- data/third_party/boringssl/include/openssl/ssl3.h +18 -25
- data/third_party/boringssl/include/openssl/stack.h +2 -4
- data/third_party/boringssl/include/openssl/stack_macros.h +321 -353
- data/third_party/boringssl/include/openssl/thread.h +31 -13
- data/third_party/boringssl/include/openssl/time_support.h +1 -0
- data/third_party/boringssl/include/openssl/tls1.h +37 -33
- data/third_party/boringssl/include/openssl/x509.h +69 -26
- data/third_party/boringssl/include/openssl/x509_vfy.h +12 -10
- data/third_party/boringssl/include/openssl/x509v3.h +23 -2
- data/third_party/boringssl/ssl/custom_extensions.c +3 -5
- data/third_party/boringssl/ssl/d1_both.c +463 -499
- data/third_party/boringssl/ssl/d1_lib.c +38 -109
- data/third_party/boringssl/ssl/d1_pkt.c +173 -334
- data/third_party/boringssl/ssl/d1_srtp.c +20 -18
- data/third_party/boringssl/ssl/{d1_meth.c → dtls_method.c} +88 -15
- data/third_party/boringssl/ssl/dtls_record.c +27 -26
- data/third_party/boringssl/ssl/{s3_clnt.c → handshake_client.c} +816 -904
- data/third_party/boringssl/ssl/handshake_server.c +1932 -0
- data/third_party/boringssl/ssl/internal.h +712 -439
- data/third_party/boringssl/ssl/s3_both.c +445 -257
- data/third_party/boringssl/ssl/s3_enc.c +53 -36
- data/third_party/boringssl/ssl/s3_lib.c +23 -268
- data/third_party/boringssl/ssl/s3_pkt.c +168 -364
- data/third_party/boringssl/ssl/ssl_aead_ctx.c +46 -17
- data/third_party/boringssl/ssl/ssl_asn1.c +56 -26
- data/third_party/boringssl/ssl/ssl_buffer.c +16 -24
- data/third_party/boringssl/ssl/ssl_cert.c +324 -49
- data/third_party/boringssl/ssl/ssl_cipher.c +205 -150
- data/third_party/boringssl/ssl/ssl_ecdh.c +287 -51
- data/third_party/boringssl/ssl/ssl_file.c +21 -68
- data/third_party/boringssl/ssl/ssl_lib.c +881 -510
- data/third_party/boringssl/ssl/ssl_rsa.c +404 -34
- data/third_party/boringssl/ssl/ssl_session.c +324 -103
- data/third_party/boringssl/ssl/ssl_stat.c +6 -88
- data/third_party/boringssl/ssl/t1_enc.c +23 -39
- data/third_party/boringssl/ssl/t1_lib.c +1120 -622
- data/third_party/boringssl/ssl/tls13_both.c +440 -0
- data/third_party/boringssl/ssl/tls13_client.c +682 -0
- data/third_party/boringssl/ssl/tls13_enc.c +391 -0
- data/third_party/boringssl/ssl/tls13_server.c +672 -0
- data/third_party/boringssl/ssl/{s3_meth.c → tls_method.c} +100 -21
- data/third_party/boringssl/ssl/tls_record.c +159 -77
- data/third_party/nanopb/pb.h +60 -28
- data/third_party/nanopb/pb_decode.c +120 -92
- data/third_party/nanopb/pb_decode.h +3 -3
- data/third_party/nanopb/pb_encode.c +73 -67
- data/third_party/nanopb/pb_encode.h +4 -4
- metadata +155 -89
- data/include/grpc/impl/codegen/byte_buffer.h +0 -122
- data/include/grpc/impl/codegen/log.h +0 -118
- data/include/grpc/impl/codegen/time.h +0 -130
- data/src/core/ext/client_config/client_channel.c +0 -593
- data/src/core/ext/client_config/subchannel_call_holder.c +0 -272
- data/src/core/ext/client_config/subchannel_call_holder.h +0 -99
- data/src/core/lib/iomgr/ev_poll_and_epoll_posix.c +0 -2046
- data/src/core/lib/iomgr/workqueue_posix.c +0 -151
- data/src/core/lib/security/transport/handshake.c +0 -368
- data/third_party/boringssl/crypto/asn1/a_bytes.c +0 -308
- data/third_party/boringssl/crypto/asn1/bio_asn1.c +0 -477
- data/third_party/boringssl/crypto/asn1/bio_ndef.c +0 -251
- data/third_party/boringssl/crypto/asn1/t_pkey.c +0 -110
- data/third_party/boringssl/crypto/asn1/tasn_prn.c +0 -596
- data/third_party/boringssl/crypto/chacha/chacha_vec.c +0 -328
- data/third_party/boringssl/crypto/directory.h +0 -66
- data/third_party/boringssl/crypto/directory_posix.c +0 -108
- data/third_party/boringssl/crypto/directory_win.c +0 -144
- data/third_party/boringssl/crypto/test/scoped_types.h +0 -140
- data/third_party/boringssl/include/openssl/pqueue.h +0 -146
- data/third_party/boringssl/ssl/d1_clnt.c +0 -561
- data/third_party/boringssl/ssl/d1_srvr.c +0 -476
- data/third_party/boringssl/ssl/pqueue/pqueue.c +0 -197
- data/third_party/boringssl/ssl/s3_srvr.c +0 -2272
- data/third_party/boringssl/ssl/test/async_bio.h +0 -45
- data/third_party/boringssl/ssl/test/packeted_bio.h +0 -44
- data/third_party/boringssl/ssl/test/test_config.h +0 -110
@@ -0,0 +1,159 @@
|
|
1
|
+
/*
|
2
|
+
*
|
3
|
+
* Copyright 2016, Google Inc.
|
4
|
+
* All rights reserved.
|
5
|
+
*
|
6
|
+
* Redistribution and use in source and binary forms, with or without
|
7
|
+
* modification, are permitted provided that the following conditions are
|
8
|
+
* met:
|
9
|
+
*
|
10
|
+
* * Redistributions of source code must retain the above copyright
|
11
|
+
* notice, this list of conditions and the following disclaimer.
|
12
|
+
* * Redistributions in binary form must reproduce the above
|
13
|
+
* copyright notice, this list of conditions and the following disclaimer
|
14
|
+
* in the documentation and/or other materials provided with the
|
15
|
+
* distribution.
|
16
|
+
* * Neither the name of Google Inc. nor the names of its
|
17
|
+
* contributors may be used to endorse or promote products derived from
|
18
|
+
* this software without specific prior written permission.
|
19
|
+
*
|
20
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
21
|
+
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
22
|
+
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
23
|
+
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
24
|
+
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
25
|
+
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
26
|
+
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
27
|
+
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
28
|
+
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
29
|
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
30
|
+
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
31
|
+
*
|
32
|
+
*/
|
33
|
+
|
34
|
+
#ifndef GRPC_CORE_LIB_IOMGR_RESOURCE_QUOTA_H
|
35
|
+
#define GRPC_CORE_LIB_IOMGR_RESOURCE_QUOTA_H
|
36
|
+
|
37
|
+
#include <grpc/grpc.h>
|
38
|
+
|
39
|
+
#include "src/core/lib/iomgr/exec_ctx.h"
|
40
|
+
|
41
|
+
/** \file Tracks resource usage against a pool.
|
42
|
+
|
43
|
+
The current implementation tracks only memory usage, but in the future
|
44
|
+
this may be extended to (for example) threads and file descriptors.
|
45
|
+
|
46
|
+
A grpc_resource_quota represents the pooled resources, and
|
47
|
+
grpc_resource_user instances attach to the quota and consume those
|
48
|
+
resources. They also offer a vector for reclamation: if we become
|
49
|
+
resource constrained, grpc_resource_user instances are asked (in turn) to
|
50
|
+
free up whatever they can so that the system as a whole can make progress.
|
51
|
+
|
52
|
+
There are three kinds of reclamation that take place, in order of increasing
|
53
|
+
invasiveness:
|
54
|
+
- an internal reclamation, where cached resource at the resource user level
|
55
|
+
is returned to the quota
|
56
|
+
- a benign reclamation phase, whereby resources that are in use but are not
|
57
|
+
helping anything make progress are reclaimed
|
58
|
+
- a destructive reclamation, whereby resources that are helping something
|
59
|
+
make progress may be enacted so that at least one part of the system can
|
60
|
+
complete.
|
61
|
+
|
62
|
+
Only one reclamation will be outstanding for a given quota at a given time.
|
63
|
+
On each reclamation attempt, the kinds of reclamation are tried in order of
|
64
|
+
increasing invasiveness, stopping at the first one that succeeds. Thus, on a
|
65
|
+
given reclamation attempt, if internal and benign reclamation both fail, it
|
66
|
+
will wind up doing a destructive reclamation. However, the next reclamation
|
67
|
+
attempt may then be able to get what it needs via internal or benign
|
68
|
+
reclamation, due to resources that may have been freed up by the destructive
|
69
|
+
reclamation in the previous attempt.
|
70
|
+
|
71
|
+
Future work will be to expose the current resource pressure so that back
|
72
|
+
pressure can be applied to avoid reclamation phases starting.
|
73
|
+
|
74
|
+
Resource users own references to resource quotas, and resource quotas
|
75
|
+
maintain lists of users (which users arrange to leave before they are
|
76
|
+
destroyed) */
|
77
|
+
|
78
|
+
extern int grpc_resource_quota_trace;
|
79
|
+
|
80
|
+
grpc_resource_quota *grpc_resource_quota_ref_internal(
|
81
|
+
grpc_resource_quota *resource_quota);
|
82
|
+
void grpc_resource_quota_unref_internal(grpc_exec_ctx *exec_ctx,
|
83
|
+
grpc_resource_quota *resource_quota);
|
84
|
+
grpc_resource_quota *grpc_resource_quota_from_channel_args(
|
85
|
+
const grpc_channel_args *channel_args);
|
86
|
+
|
87
|
+
typedef struct grpc_resource_user grpc_resource_user;
|
88
|
+
|
89
|
+
grpc_resource_user *grpc_resource_user_create(
|
90
|
+
grpc_resource_quota *resource_quota, const char *name);
|
91
|
+
|
92
|
+
/* Returns a borrowed reference to the underlying resource quota for this
|
93
|
+
resource user. */
|
94
|
+
grpc_resource_quota *grpc_resource_user_quota(
|
95
|
+
grpc_resource_user *resource_user);
|
96
|
+
|
97
|
+
void grpc_resource_user_ref(grpc_resource_user *resource_user);
|
98
|
+
void grpc_resource_user_unref(grpc_exec_ctx *exec_ctx,
|
99
|
+
grpc_resource_user *resource_user);
|
100
|
+
void grpc_resource_user_shutdown(grpc_exec_ctx *exec_ctx,
|
101
|
+
grpc_resource_user *resource_user);
|
102
|
+
|
103
|
+
/* Allocate from the resource user (and its quota).
|
104
|
+
If optional_on_done is NULL, then allocate immediately. This may push the
|
105
|
+
quota over-limit, at which point reclamation will kick in.
|
106
|
+
If optional_on_done is non-NULL, it will be scheduled when the allocation has
|
107
|
+
been granted by the quota. */
|
108
|
+
void grpc_resource_user_alloc(grpc_exec_ctx *exec_ctx,
|
109
|
+
grpc_resource_user *resource_user, size_t size,
|
110
|
+
grpc_closure *optional_on_done);
|
111
|
+
/* Release memory back to the quota */
|
112
|
+
void grpc_resource_user_free(grpc_exec_ctx *exec_ctx,
|
113
|
+
grpc_resource_user *resource_user, size_t size);
|
114
|
+
/* Post a memory reclaimer to the resource user. Only one benign and one
|
115
|
+
destructive reclaimer can be posted at once. When executed, the reclaimer
|
116
|
+
MUST call grpc_resource_user_finish_reclamation before it completes, to
|
117
|
+
return control to the resource quota. */
|
118
|
+
void grpc_resource_user_post_reclaimer(grpc_exec_ctx *exec_ctx,
|
119
|
+
grpc_resource_user *resource_user,
|
120
|
+
bool destructive, grpc_closure *closure);
|
121
|
+
/* Finish a reclamation step */
|
122
|
+
void grpc_resource_user_finish_reclamation(grpc_exec_ctx *exec_ctx,
|
123
|
+
grpc_resource_user *resource_user);
|
124
|
+
|
125
|
+
/* Helper to allocate slices from a resource user */
|
126
|
+
typedef struct grpc_resource_user_slice_allocator {
|
127
|
+
/* Closure for when a resource user allocation completes */
|
128
|
+
grpc_closure on_allocated;
|
129
|
+
/* Closure to call when slices have been allocated */
|
130
|
+
grpc_closure on_done;
|
131
|
+
/* Length of slices to allocate on the current request */
|
132
|
+
size_t length;
|
133
|
+
/* Number of slices to allocate on the current request */
|
134
|
+
size_t count;
|
135
|
+
/* Destination for slices to allocate on the current request */
|
136
|
+
grpc_slice_buffer *dest;
|
137
|
+
/* Parent resource user */
|
138
|
+
grpc_resource_user *resource_user;
|
139
|
+
} grpc_resource_user_slice_allocator;
|
140
|
+
|
141
|
+
/* Initialize a slice allocator.
|
142
|
+
When an allocation is completed, calls \a cb with arg \p. */
|
143
|
+
void grpc_resource_user_slice_allocator_init(
|
144
|
+
grpc_resource_user_slice_allocator *slice_allocator,
|
145
|
+
grpc_resource_user *resource_user, grpc_iomgr_cb_func cb, void *p);
|
146
|
+
|
147
|
+
/* Allocate \a count slices of length \a length into \a dest. Only one request
|
148
|
+
can be outstanding at a time. */
|
149
|
+
void grpc_resource_user_alloc_slices(
|
150
|
+
grpc_exec_ctx *exec_ctx,
|
151
|
+
grpc_resource_user_slice_allocator *slice_allocator, size_t length,
|
152
|
+
size_t count, grpc_slice_buffer *dest);
|
153
|
+
|
154
|
+
/* Allocate one slice of length \a size synchronously. */
|
155
|
+
grpc_slice grpc_resource_user_slice_malloc(grpc_exec_ctx *exec_ctx,
|
156
|
+
grpc_resource_user *resource_user,
|
157
|
+
size_t size);
|
158
|
+
|
159
|
+
#endif /* GRPC_CORE_LIB_IOMGR_RESOURCE_QUOTA_H */
|
@@ -31,16 +31,24 @@
|
|
31
31
|
*
|
32
32
|
*/
|
33
33
|
|
34
|
+
/* This header transitively includes other headers that care about include
|
35
|
+
* order, so it should be included first. As a consequence, it should not be
|
36
|
+
* included in any other header. */
|
37
|
+
|
34
38
|
#ifndef GRPC_CORE_LIB_IOMGR_SOCKADDR_H
|
35
39
|
#define GRPC_CORE_LIB_IOMGR_SOCKADDR_H
|
36
40
|
|
37
|
-
#include
|
41
|
+
#include "src/core/lib/iomgr/port.h"
|
42
|
+
|
43
|
+
#ifdef GRPC_UV
|
44
|
+
#include <uv.h>
|
45
|
+
#endif
|
38
46
|
|
39
47
|
#ifdef GPR_WINDOWS
|
40
48
|
#include "src/core/lib/iomgr/sockaddr_windows.h"
|
41
49
|
#endif
|
42
50
|
|
43
|
-
#ifdef
|
51
|
+
#ifdef GRPC_POSIX_SOCKETADDR
|
44
52
|
#include "src/core/lib/iomgr/sockaddr_posix.h"
|
45
53
|
#endif
|
46
54
|
|
@@ -42,26 +42,32 @@
|
|
42
42
|
#include <grpc/support/port_platform.h>
|
43
43
|
#include <grpc/support/string_util.h>
|
44
44
|
|
45
|
+
#include "src/core/lib/iomgr/sockaddr.h"
|
46
|
+
#include "src/core/lib/iomgr/socket_utils.h"
|
45
47
|
#include "src/core/lib/iomgr/unix_sockets_posix.h"
|
46
48
|
#include "src/core/lib/support/string.h"
|
47
49
|
|
48
50
|
static const uint8_t kV4MappedPrefix[] = {0, 0, 0, 0, 0, 0,
|
49
51
|
0, 0, 0, 0, 0xff, 0xff};
|
50
52
|
|
51
|
-
int grpc_sockaddr_is_v4mapped(const
|
52
|
-
|
53
|
-
GPR_ASSERT(
|
53
|
+
int grpc_sockaddr_is_v4mapped(const grpc_resolved_address *resolved_addr,
|
54
|
+
grpc_resolved_address *resolved_addr4_out) {
|
55
|
+
GPR_ASSERT(resolved_addr != resolved_addr4_out);
|
56
|
+
const struct sockaddr *addr = (const struct sockaddr *)resolved_addr->addr;
|
57
|
+
struct sockaddr_in *addr4_out =
|
58
|
+
(struct sockaddr_in *)resolved_addr4_out->addr;
|
54
59
|
if (addr->sa_family == AF_INET6) {
|
55
60
|
const struct sockaddr_in6 *addr6 = (const struct sockaddr_in6 *)addr;
|
56
61
|
if (memcmp(addr6->sin6_addr.s6_addr, kV4MappedPrefix,
|
57
62
|
sizeof(kV4MappedPrefix)) == 0) {
|
58
|
-
if (
|
63
|
+
if (resolved_addr4_out != NULL) {
|
59
64
|
/* Normalize ::ffff:0.0.0.0/96 to IPv4. */
|
60
|
-
memset(
|
65
|
+
memset(resolved_addr4_out, 0, sizeof(*resolved_addr4_out));
|
61
66
|
addr4_out->sin_family = AF_INET;
|
62
67
|
/* s6_addr32 would be nice, but it's non-standard. */
|
63
68
|
memcpy(&addr4_out->sin_addr, &addr6->sin6_addr.s6_addr[12], 4);
|
64
69
|
addr4_out->sin_port = addr6->sin6_port;
|
70
|
+
resolved_addr4_out->len = sizeof(struct sockaddr_in);
|
65
71
|
}
|
66
72
|
return 1;
|
67
73
|
}
|
@@ -69,26 +75,33 @@ int grpc_sockaddr_is_v4mapped(const struct sockaddr *addr,
|
|
69
75
|
return 0;
|
70
76
|
}
|
71
77
|
|
72
|
-
int grpc_sockaddr_to_v4mapped(const
|
73
|
-
|
74
|
-
GPR_ASSERT(
|
78
|
+
int grpc_sockaddr_to_v4mapped(const grpc_resolved_address *resolved_addr,
|
79
|
+
grpc_resolved_address *resolved_addr6_out) {
|
80
|
+
GPR_ASSERT(resolved_addr != resolved_addr6_out);
|
81
|
+
const struct sockaddr *addr = (const struct sockaddr *)resolved_addr->addr;
|
82
|
+
struct sockaddr_in6 *addr6_out =
|
83
|
+
(struct sockaddr_in6 *)resolved_addr6_out->addr;
|
75
84
|
if (addr->sa_family == AF_INET) {
|
76
85
|
const struct sockaddr_in *addr4 = (const struct sockaddr_in *)addr;
|
77
|
-
memset(
|
86
|
+
memset(resolved_addr6_out, 0, sizeof(*resolved_addr6_out));
|
78
87
|
addr6_out->sin6_family = AF_INET6;
|
79
88
|
memcpy(&addr6_out->sin6_addr.s6_addr[0], kV4MappedPrefix, 12);
|
80
89
|
memcpy(&addr6_out->sin6_addr.s6_addr[12], &addr4->sin_addr, 4);
|
81
90
|
addr6_out->sin6_port = addr4->sin_port;
|
91
|
+
resolved_addr6_out->len = sizeof(struct sockaddr_in6);
|
82
92
|
return 1;
|
83
93
|
}
|
84
94
|
return 0;
|
85
95
|
}
|
86
96
|
|
87
|
-
int grpc_sockaddr_is_wildcard(const
|
88
|
-
|
89
|
-
|
90
|
-
|
97
|
+
int grpc_sockaddr_is_wildcard(const grpc_resolved_address *resolved_addr,
|
98
|
+
int *port_out) {
|
99
|
+
const struct sockaddr *addr;
|
100
|
+
grpc_resolved_address addr4_normalized;
|
101
|
+
if (grpc_sockaddr_is_v4mapped(resolved_addr, &addr4_normalized)) {
|
102
|
+
resolved_addr = &addr4_normalized;
|
91
103
|
}
|
104
|
+
addr = (const struct sockaddr *)resolved_addr->addr;
|
92
105
|
if (addr->sa_family == AF_INET) {
|
93
106
|
/* Check for 0.0.0.0 */
|
94
107
|
const struct sockaddr_in *addr4 = (const struct sockaddr_in *)addr;
|
@@ -113,39 +126,49 @@ int grpc_sockaddr_is_wildcard(const struct sockaddr *addr, int *port_out) {
|
|
113
126
|
}
|
114
127
|
}
|
115
128
|
|
116
|
-
void grpc_sockaddr_make_wildcards(int port,
|
117
|
-
|
129
|
+
void grpc_sockaddr_make_wildcards(int port, grpc_resolved_address *wild4_out,
|
130
|
+
grpc_resolved_address *wild6_out) {
|
118
131
|
grpc_sockaddr_make_wildcard4(port, wild4_out);
|
119
132
|
grpc_sockaddr_make_wildcard6(port, wild6_out);
|
120
133
|
}
|
121
134
|
|
122
|
-
void grpc_sockaddr_make_wildcard4(int port,
|
135
|
+
void grpc_sockaddr_make_wildcard4(int port,
|
136
|
+
grpc_resolved_address *resolved_wild_out) {
|
137
|
+
struct sockaddr_in *wild_out = (struct sockaddr_in *)resolved_wild_out->addr;
|
123
138
|
GPR_ASSERT(port >= 0 && port < 65536);
|
124
|
-
memset(
|
139
|
+
memset(resolved_wild_out, 0, sizeof(*resolved_wild_out));
|
125
140
|
wild_out->sin_family = AF_INET;
|
126
141
|
wild_out->sin_port = htons((uint16_t)port);
|
142
|
+
resolved_wild_out->len = sizeof(struct sockaddr_in);
|
127
143
|
}
|
128
144
|
|
129
|
-
void grpc_sockaddr_make_wildcard6(int port,
|
145
|
+
void grpc_sockaddr_make_wildcard6(int port,
|
146
|
+
grpc_resolved_address *resolved_wild_out) {
|
147
|
+
struct sockaddr_in6 *wild_out =
|
148
|
+
(struct sockaddr_in6 *)resolved_wild_out->addr;
|
130
149
|
GPR_ASSERT(port >= 0 && port < 65536);
|
131
|
-
memset(
|
150
|
+
memset(resolved_wild_out, 0, sizeof(*resolved_wild_out));
|
132
151
|
wild_out->sin6_family = AF_INET6;
|
133
152
|
wild_out->sin6_port = htons((uint16_t)port);
|
153
|
+
resolved_wild_out->len = sizeof(struct sockaddr_in6);
|
134
154
|
}
|
135
155
|
|
136
|
-
int grpc_sockaddr_to_string(char **out,
|
156
|
+
int grpc_sockaddr_to_string(char **out,
|
157
|
+
const grpc_resolved_address *resolved_addr,
|
137
158
|
int normalize) {
|
159
|
+
const struct sockaddr *addr;
|
138
160
|
const int save_errno = errno;
|
139
|
-
|
161
|
+
grpc_resolved_address addr_normalized;
|
140
162
|
char ntop_buf[INET6_ADDRSTRLEN];
|
141
163
|
const void *ip = NULL;
|
142
164
|
int port;
|
143
165
|
int ret;
|
144
166
|
|
145
167
|
*out = NULL;
|
146
|
-
if (normalize && grpc_sockaddr_is_v4mapped(
|
147
|
-
|
168
|
+
if (normalize && grpc_sockaddr_is_v4mapped(resolved_addr, &addr_normalized)) {
|
169
|
+
resolved_addr = &addr_normalized;
|
148
170
|
}
|
171
|
+
addr = (const struct sockaddr *)resolved_addr->addr;
|
149
172
|
if (addr->sa_family == AF_INET) {
|
150
173
|
const struct sockaddr_in *addr4 = (const struct sockaddr_in *)addr;
|
151
174
|
ip = &addr4->sin_addr;
|
@@ -155,10 +178,8 @@ int grpc_sockaddr_to_string(char **out, const struct sockaddr *addr,
|
|
155
178
|
ip = &addr6->sin6_addr;
|
156
179
|
port = ntohs(addr6->sin6_port);
|
157
180
|
}
|
158
|
-
/* Windows inet_ntop wants a mutable ip pointer */
|
159
181
|
if (ip != NULL &&
|
160
|
-
|
161
|
-
NULL) {
|
182
|
+
grpc_inet_ntop(addr->sa_family, ip, ntop_buf, sizeof(ntop_buf)) != NULL) {
|
162
183
|
ret = gpr_join_host_port(out, ntop_buf, port);
|
163
184
|
} else {
|
164
185
|
ret = gpr_asprintf(out, "(sockaddr family=%d)", addr->sa_family);
|
@@ -168,39 +189,43 @@ int grpc_sockaddr_to_string(char **out, const struct sockaddr *addr,
|
|
168
189
|
return ret;
|
169
190
|
}
|
170
191
|
|
171
|
-
char *grpc_sockaddr_to_uri(const
|
192
|
+
char *grpc_sockaddr_to_uri(const grpc_resolved_address *resolved_addr) {
|
172
193
|
char *temp;
|
173
194
|
char *result;
|
174
|
-
|
195
|
+
grpc_resolved_address addr_normalized;
|
196
|
+
const struct sockaddr *addr;
|
175
197
|
|
176
|
-
if (grpc_sockaddr_is_v4mapped(
|
177
|
-
|
198
|
+
if (grpc_sockaddr_is_v4mapped(resolved_addr, &addr_normalized)) {
|
199
|
+
resolved_addr = &addr_normalized;
|
178
200
|
}
|
179
201
|
|
202
|
+
addr = (const struct sockaddr *)resolved_addr->addr;
|
203
|
+
|
180
204
|
switch (addr->sa_family) {
|
181
205
|
case AF_INET:
|
182
|
-
grpc_sockaddr_to_string(&temp,
|
206
|
+
grpc_sockaddr_to_string(&temp, resolved_addr, 0);
|
183
207
|
gpr_asprintf(&result, "ipv4:%s", temp);
|
184
208
|
gpr_free(temp);
|
185
209
|
return result;
|
186
210
|
case AF_INET6:
|
187
|
-
grpc_sockaddr_to_string(&temp,
|
211
|
+
grpc_sockaddr_to_string(&temp, resolved_addr, 0);
|
188
212
|
gpr_asprintf(&result, "ipv6:%s", temp);
|
189
213
|
gpr_free(temp);
|
190
214
|
return result;
|
191
215
|
default:
|
192
|
-
return grpc_sockaddr_to_uri_unix_if_possible(
|
216
|
+
return grpc_sockaddr_to_uri_unix_if_possible(resolved_addr);
|
193
217
|
}
|
194
218
|
}
|
195
219
|
|
196
|
-
int grpc_sockaddr_get_port(const
|
220
|
+
int grpc_sockaddr_get_port(const grpc_resolved_address *resolved_addr) {
|
221
|
+
const struct sockaddr *addr = (const struct sockaddr *)resolved_addr->addr;
|
197
222
|
switch (addr->sa_family) {
|
198
223
|
case AF_INET:
|
199
224
|
return ntohs(((struct sockaddr_in *)addr)->sin_port);
|
200
225
|
case AF_INET6:
|
201
226
|
return ntohs(((struct sockaddr_in6 *)addr)->sin6_port);
|
202
227
|
default:
|
203
|
-
if (grpc_is_unix_socket(
|
228
|
+
if (grpc_is_unix_socket(resolved_addr)) {
|
204
229
|
return 1;
|
205
230
|
}
|
206
231
|
gpr_log(GPR_ERROR, "Unknown socket family %d in grpc_sockaddr_get_port",
|
@@ -209,7 +234,9 @@ int grpc_sockaddr_get_port(const struct sockaddr *addr) {
|
|
209
234
|
}
|
210
235
|
}
|
211
236
|
|
212
|
-
int grpc_sockaddr_set_port(const
|
237
|
+
int grpc_sockaddr_set_port(const grpc_resolved_address *resolved_addr,
|
238
|
+
int port) {
|
239
|
+
const struct sockaddr *addr = (const struct sockaddr *)resolved_addr->addr;
|
213
240
|
switch (addr->sa_family) {
|
214
241
|
case AF_INET:
|
215
242
|
GPR_ASSERT(port >= 0 && port < 65536);
|
@@ -34,40 +34,40 @@
|
|
34
34
|
#ifndef GRPC_CORE_LIB_IOMGR_SOCKADDR_UTILS_H
|
35
35
|
#define GRPC_CORE_LIB_IOMGR_SOCKADDR_UTILS_H
|
36
36
|
|
37
|
-
#include "src/core/lib/iomgr/
|
37
|
+
#include "src/core/lib/iomgr/resolve_address.h"
|
38
38
|
|
39
39
|
/* Returns true if addr is an IPv4-mapped IPv6 address within the
|
40
40
|
::ffff:0.0.0.0/96 range, or false otherwise.
|
41
41
|
|
42
42
|
If addr4_out is non-NULL, the inner IPv4 address will be copied here when
|
43
43
|
returning true. */
|
44
|
-
int grpc_sockaddr_is_v4mapped(const
|
45
|
-
|
44
|
+
int grpc_sockaddr_is_v4mapped(const grpc_resolved_address *addr,
|
45
|
+
grpc_resolved_address *addr4_out);
|
46
46
|
|
47
47
|
/* If addr is an AF_INET address, writes the corresponding ::ffff:0.0.0.0/96
|
48
48
|
address to addr6_out and returns true. Otherwise returns false. */
|
49
|
-
int grpc_sockaddr_to_v4mapped(const
|
50
|
-
|
49
|
+
int grpc_sockaddr_to_v4mapped(const grpc_resolved_address *addr,
|
50
|
+
grpc_resolved_address *addr6_out);
|
51
51
|
|
52
52
|
/* If addr is ::, 0.0.0.0, or ::ffff:0.0.0.0, writes the port number to
|
53
53
|
*port_out (if not NULL) and returns true, otherwise returns false. */
|
54
|
-
int grpc_sockaddr_is_wildcard(const
|
54
|
+
int grpc_sockaddr_is_wildcard(const grpc_resolved_address *addr, int *port_out);
|
55
55
|
|
56
56
|
/* Writes 0.0.0.0:port and [::]:port to separate sockaddrs. */
|
57
|
-
void grpc_sockaddr_make_wildcards(int port,
|
58
|
-
|
57
|
+
void grpc_sockaddr_make_wildcards(int port, grpc_resolved_address *wild4_out,
|
58
|
+
grpc_resolved_address *wild6_out);
|
59
59
|
|
60
60
|
/* Writes 0.0.0.0:port. */
|
61
|
-
void grpc_sockaddr_make_wildcard4(int port,
|
61
|
+
void grpc_sockaddr_make_wildcard4(int port, grpc_resolved_address *wild_out);
|
62
62
|
|
63
63
|
/* Writes [::]:port. */
|
64
|
-
void grpc_sockaddr_make_wildcard6(int port,
|
64
|
+
void grpc_sockaddr_make_wildcard6(int port, grpc_resolved_address *wild_out);
|
65
65
|
|
66
66
|
/* Return the IP port number of a sockaddr */
|
67
|
-
int grpc_sockaddr_get_port(const
|
67
|
+
int grpc_sockaddr_get_port(const grpc_resolved_address *addr);
|
68
68
|
|
69
69
|
/* Set IP port number of a sockaddr */
|
70
|
-
int grpc_sockaddr_set_port(const
|
70
|
+
int grpc_sockaddr_set_port(const grpc_resolved_address *addr, int port);
|
71
71
|
|
72
72
|
/* Converts a sockaddr into a newly-allocated human-readable string.
|
73
73
|
|
@@ -81,9 +81,9 @@ int grpc_sockaddr_set_port(const struct sockaddr *addr, int port);
|
|
81
81
|
|
82
82
|
In the unlikely event of an error, returns -1 and sets *out to NULL.
|
83
83
|
The existing value of errno is always preserved. */
|
84
|
-
int grpc_sockaddr_to_string(char **out, const
|
84
|
+
int grpc_sockaddr_to_string(char **out, const grpc_resolved_address *addr,
|
85
85
|
int normalize);
|
86
86
|
|
87
|
-
char *grpc_sockaddr_to_uri(const
|
87
|
+
char *grpc_sockaddr_to_uri(const grpc_resolved_address *addr);
|
88
88
|
|
89
89
|
#endif /* GRPC_CORE_LIB_IOMGR_SOCKADDR_UTILS_H */
|