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,39 @@
|
|
1
|
+
//
|
2
|
+
// Copyright 2016, Google Inc.
|
3
|
+
// All rights reserved.
|
4
|
+
//
|
5
|
+
// Redistribution and use in source and binary forms, with or without
|
6
|
+
// modification, are permitted provided that the following conditions are
|
7
|
+
// met:
|
8
|
+
//
|
9
|
+
// * Redistributions of source code must retain the above copyright
|
10
|
+
// notice, this list of conditions and the following disclaimer.
|
11
|
+
// * Redistributions in binary form must reproduce the above
|
12
|
+
// copyright notice, this list of conditions and the following disclaimer
|
13
|
+
// in the documentation and/or other materials provided with the
|
14
|
+
// distribution.
|
15
|
+
// * Neither the name of Google Inc. nor the names of its
|
16
|
+
// contributors may be used to endorse or promote products derived from
|
17
|
+
// this software without specific prior written permission.
|
18
|
+
//
|
19
|
+
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
20
|
+
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
21
|
+
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
22
|
+
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
23
|
+
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
24
|
+
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
25
|
+
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
26
|
+
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
27
|
+
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
28
|
+
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
29
|
+
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
30
|
+
//
|
31
|
+
|
32
|
+
#ifndef GRPC_CORE_LIB_CHANNEL_MESSAGE_SIZE_FILTER_H
|
33
|
+
#define GRPC_CORE_LIB_CHANNEL_MESSAGE_SIZE_FILTER_H
|
34
|
+
|
35
|
+
#include "src/core/lib/channel/channel_stack.h"
|
36
|
+
|
37
|
+
extern const grpc_channel_filter grpc_message_size_filter;
|
38
|
+
|
39
|
+
#endif /* GRPC_CORE_LIB_CHANNEL_MESSAGE_SIZE_FILTER_H */
|
@@ -40,33 +40,35 @@
|
|
40
40
|
|
41
41
|
#include <zlib.h>
|
42
42
|
|
43
|
+
#include "src/core/lib/slice/slice_internal.h"
|
44
|
+
|
43
45
|
#define OUTPUT_BLOCK_SIZE 1024
|
44
46
|
|
45
|
-
static int zlib_body(
|
46
|
-
|
47
|
+
static int zlib_body(grpc_exec_ctx* exec_ctx, z_stream* zs,
|
48
|
+
grpc_slice_buffer* input, grpc_slice_buffer* output,
|
47
49
|
int (*flate)(z_stream* zs, int flush)) {
|
48
50
|
int r;
|
49
51
|
int flush;
|
50
52
|
size_t i;
|
51
|
-
|
53
|
+
grpc_slice outbuf = grpc_slice_malloc(OUTPUT_BLOCK_SIZE);
|
52
54
|
const uInt uint_max = ~(uInt)0;
|
53
55
|
|
54
|
-
GPR_ASSERT(
|
55
|
-
zs->avail_out = (uInt)
|
56
|
-
zs->next_out =
|
56
|
+
GPR_ASSERT(GRPC_SLICE_LENGTH(outbuf) <= uint_max);
|
57
|
+
zs->avail_out = (uInt)GRPC_SLICE_LENGTH(outbuf);
|
58
|
+
zs->next_out = GRPC_SLICE_START_PTR(outbuf);
|
57
59
|
flush = Z_NO_FLUSH;
|
58
60
|
for (i = 0; i < input->count; i++) {
|
59
61
|
if (i == input->count - 1) flush = Z_FINISH;
|
60
|
-
GPR_ASSERT(
|
61
|
-
zs->avail_in = (uInt)
|
62
|
-
zs->next_in =
|
62
|
+
GPR_ASSERT(GRPC_SLICE_LENGTH(input->slices[i]) <= uint_max);
|
63
|
+
zs->avail_in = (uInt)GRPC_SLICE_LENGTH(input->slices[i]);
|
64
|
+
zs->next_in = GRPC_SLICE_START_PTR(input->slices[i]);
|
63
65
|
do {
|
64
66
|
if (zs->avail_out == 0) {
|
65
|
-
|
66
|
-
outbuf =
|
67
|
-
GPR_ASSERT(
|
68
|
-
zs->avail_out = (uInt)
|
69
|
-
zs->next_out =
|
67
|
+
grpc_slice_buffer_add_indexed(output, outbuf);
|
68
|
+
outbuf = grpc_slice_malloc(OUTPUT_BLOCK_SIZE);
|
69
|
+
GPR_ASSERT(GRPC_SLICE_LENGTH(outbuf) <= uint_max);
|
70
|
+
zs->avail_out = (uInt)GRPC_SLICE_LENGTH(outbuf);
|
71
|
+
zs->next_out = GRPC_SLICE_START_PTR(outbuf);
|
70
72
|
}
|
71
73
|
r = flate(zs, flush);
|
72
74
|
if (r < 0 && r != Z_BUF_ERROR /* not fatal */) {
|
@@ -82,12 +84,12 @@ static int zlib_body(z_stream* zs, gpr_slice_buffer* input,
|
|
82
84
|
|
83
85
|
GPR_ASSERT(outbuf.refcount);
|
84
86
|
outbuf.data.refcounted.length -= zs->avail_out;
|
85
|
-
|
87
|
+
grpc_slice_buffer_add_indexed(output, outbuf);
|
86
88
|
|
87
89
|
return 1;
|
88
90
|
|
89
91
|
error:
|
90
|
-
|
92
|
+
grpc_slice_unref_internal(exec_ctx, outbuf);
|
91
93
|
return 0;
|
92
94
|
}
|
93
95
|
|
@@ -97,8 +99,8 @@ static void* zalloc_gpr(void* opaque, unsigned int items, unsigned int size) {
|
|
97
99
|
|
98
100
|
static void zfree_gpr(void* opaque, void* address) { gpr_free(address); }
|
99
101
|
|
100
|
-
static int zlib_compress(
|
101
|
-
int gzip) {
|
102
|
+
static int zlib_compress(grpc_exec_ctx* exec_ctx, grpc_slice_buffer* input,
|
103
|
+
grpc_slice_buffer* output, int gzip) {
|
102
104
|
z_stream zs;
|
103
105
|
int r;
|
104
106
|
size_t i;
|
@@ -110,10 +112,11 @@ static int zlib_compress(gpr_slice_buffer* input, gpr_slice_buffer* output,
|
|
110
112
|
r = deflateInit2(&zs, Z_DEFAULT_COMPRESSION, Z_DEFLATED, 15 | (gzip ? 16 : 0),
|
111
113
|
8, Z_DEFAULT_STRATEGY);
|
112
114
|
GPR_ASSERT(r == Z_OK);
|
113
|
-
r = zlib_body(&zs, input, output, deflate) &&
|
115
|
+
r = zlib_body(exec_ctx, &zs, input, output, deflate) &&
|
116
|
+
output->length < input->length;
|
114
117
|
if (!r) {
|
115
118
|
for (i = count_before; i < output->count; i++) {
|
116
|
-
|
119
|
+
grpc_slice_unref_internal(exec_ctx, output->slices[i]);
|
117
120
|
}
|
118
121
|
output->count = count_before;
|
119
122
|
output->length = length_before;
|
@@ -122,8 +125,8 @@ static int zlib_compress(gpr_slice_buffer* input, gpr_slice_buffer* output,
|
|
122
125
|
return r;
|
123
126
|
}
|
124
127
|
|
125
|
-
static int zlib_decompress(
|
126
|
-
int gzip) {
|
128
|
+
static int zlib_decompress(grpc_exec_ctx* exec_ctx, grpc_slice_buffer* input,
|
129
|
+
grpc_slice_buffer* output, int gzip) {
|
127
130
|
z_stream zs;
|
128
131
|
int r;
|
129
132
|
size_t i;
|
@@ -134,10 +137,10 @@ static int zlib_decompress(gpr_slice_buffer* input, gpr_slice_buffer* output,
|
|
134
137
|
zs.zfree = zfree_gpr;
|
135
138
|
r = inflateInit2(&zs, 15 | (gzip ? 16 : 0));
|
136
139
|
GPR_ASSERT(r == Z_OK);
|
137
|
-
r = zlib_body(&zs, input, output, inflate);
|
140
|
+
r = zlib_body(exec_ctx, &zs, input, output, inflate);
|
138
141
|
if (!r) {
|
139
142
|
for (i = count_before; i < output->count; i++) {
|
140
|
-
|
143
|
+
grpc_slice_unref_internal(exec_ctx, output->slices[i]);
|
141
144
|
}
|
142
145
|
output->count = count_before;
|
143
146
|
output->length = length_before;
|
@@ -146,25 +149,26 @@ static int zlib_decompress(gpr_slice_buffer* input, gpr_slice_buffer* output,
|
|
146
149
|
return r;
|
147
150
|
}
|
148
151
|
|
149
|
-
static int copy(
|
152
|
+
static int copy(grpc_slice_buffer* input, grpc_slice_buffer* output) {
|
150
153
|
size_t i;
|
151
154
|
for (i = 0; i < input->count; i++) {
|
152
|
-
|
155
|
+
grpc_slice_buffer_add(output, grpc_slice_ref_internal(input->slices[i]));
|
153
156
|
}
|
154
157
|
return 1;
|
155
158
|
}
|
156
159
|
|
157
|
-
static int compress_inner(
|
158
|
-
|
160
|
+
static int compress_inner(grpc_exec_ctx* exec_ctx,
|
161
|
+
grpc_compression_algorithm algorithm,
|
162
|
+
grpc_slice_buffer* input, grpc_slice_buffer* output) {
|
159
163
|
switch (algorithm) {
|
160
164
|
case GRPC_COMPRESS_NONE:
|
161
165
|
/* the fallback path always needs to be send uncompressed: we simply
|
162
166
|
rely on that here */
|
163
167
|
return 0;
|
164
168
|
case GRPC_COMPRESS_DEFLATE:
|
165
|
-
return zlib_compress(input, output, 0);
|
169
|
+
return zlib_compress(exec_ctx, input, output, 0);
|
166
170
|
case GRPC_COMPRESS_GZIP:
|
167
|
-
return zlib_compress(input, output, 1);
|
171
|
+
return zlib_compress(exec_ctx, input, output, 1);
|
168
172
|
case GRPC_COMPRESS_ALGORITHMS_COUNT:
|
169
173
|
break;
|
170
174
|
}
|
@@ -172,24 +176,26 @@ static int compress_inner(grpc_compression_algorithm algorithm,
|
|
172
176
|
return 0;
|
173
177
|
}
|
174
178
|
|
175
|
-
int grpc_msg_compress(
|
176
|
-
|
177
|
-
|
179
|
+
int grpc_msg_compress(grpc_exec_ctx* exec_ctx,
|
180
|
+
grpc_compression_algorithm algorithm,
|
181
|
+
grpc_slice_buffer* input, grpc_slice_buffer* output) {
|
182
|
+
if (!compress_inner(exec_ctx, algorithm, input, output)) {
|
178
183
|
copy(input, output);
|
179
184
|
return 0;
|
180
185
|
}
|
181
186
|
return 1;
|
182
187
|
}
|
183
188
|
|
184
|
-
int grpc_msg_decompress(
|
185
|
-
|
189
|
+
int grpc_msg_decompress(grpc_exec_ctx* exec_ctx,
|
190
|
+
grpc_compression_algorithm algorithm,
|
191
|
+
grpc_slice_buffer* input, grpc_slice_buffer* output) {
|
186
192
|
switch (algorithm) {
|
187
193
|
case GRPC_COMPRESS_NONE:
|
188
194
|
return copy(input, output);
|
189
195
|
case GRPC_COMPRESS_DEFLATE:
|
190
|
-
return zlib_decompress(input, output, 0);
|
196
|
+
return zlib_decompress(exec_ctx, input, output, 0);
|
191
197
|
case GRPC_COMPRESS_GZIP:
|
192
|
-
return zlib_decompress(input, output, 1);
|
198
|
+
return zlib_decompress(exec_ctx, input, output, 1);
|
193
199
|
case GRPC_COMPRESS_ALGORITHMS_COUNT:
|
194
200
|
break;
|
195
201
|
}
|
@@ -35,18 +35,20 @@
|
|
35
35
|
#define GRPC_CORE_LIB_COMPRESSION_MESSAGE_COMPRESS_H
|
36
36
|
|
37
37
|
#include <grpc/compression.h>
|
38
|
-
#include <grpc/
|
38
|
+
#include <grpc/slice_buffer.h>
|
39
39
|
|
40
40
|
/* compress 'input' to 'output' using 'algorithm'.
|
41
41
|
On success, appends compressed slices to output and returns 1.
|
42
42
|
On failure, appends uncompressed slices to output and returns 0. */
|
43
|
-
int grpc_msg_compress(
|
44
|
-
|
43
|
+
int grpc_msg_compress(grpc_exec_ctx* exec_ctx,
|
44
|
+
grpc_compression_algorithm algorithm,
|
45
|
+
grpc_slice_buffer* input, grpc_slice_buffer* output);
|
45
46
|
|
46
47
|
/* decompress 'input' to 'output' using 'algorithm'.
|
47
48
|
On success, appends slices to output and returns 1.
|
48
49
|
On failure, output is unchanged, and returns 0. */
|
49
|
-
int grpc_msg_decompress(
|
50
|
-
|
50
|
+
int grpc_msg_decompress(grpc_exec_ctx* exec_ctx,
|
51
|
+
grpc_compression_algorithm algorithm,
|
52
|
+
grpc_slice_buffer* input, grpc_slice_buffer* output);
|
51
53
|
|
52
54
|
#endif /* GRPC_CORE_LIB_COMPRESSION_MESSAGE_COMPRESS_H */
|
@@ -37,14 +37,14 @@
|
|
37
37
|
#include <stdio.h>
|
38
38
|
#include <string.h>
|
39
39
|
|
40
|
+
#include <grpc/slice.h>
|
40
41
|
#include <grpc/support/alloc.h>
|
41
|
-
#include <grpc/support/slice.h>
|
42
42
|
#include <grpc/support/string_util.h>
|
43
43
|
#include <grpc/support/useful.h>
|
44
44
|
#include "src/core/lib/support/string.h"
|
45
45
|
|
46
46
|
static void fill_common_header(const grpc_httpcli_request *request,
|
47
|
-
gpr_strvec *buf) {
|
47
|
+
gpr_strvec *buf, bool connection_close) {
|
48
48
|
size_t i;
|
49
49
|
gpr_strvec_add(buf, gpr_strdup(request->http.path));
|
50
50
|
gpr_strvec_add(buf, gpr_strdup(" HTTP/1.0\r\n"));
|
@@ -52,7 +52,8 @@ static void fill_common_header(const grpc_httpcli_request *request,
|
|
52
52
|
gpr_strvec_add(buf, gpr_strdup("Host: "));
|
53
53
|
gpr_strvec_add(buf, gpr_strdup(request->host));
|
54
54
|
gpr_strvec_add(buf, gpr_strdup("\r\n"));
|
55
|
-
|
55
|
+
if (connection_close)
|
56
|
+
gpr_strvec_add(buf, gpr_strdup("Connection: close\r\n"));
|
56
57
|
gpr_strvec_add(buf,
|
57
58
|
gpr_strdup("User-Agent: " GRPC_HTTPCLI_USER_AGENT "\r\n"));
|
58
59
|
/* user supplied headers */
|
@@ -64,25 +65,26 @@ static void fill_common_header(const grpc_httpcli_request *request,
|
|
64
65
|
}
|
65
66
|
}
|
66
67
|
|
67
|
-
|
68
|
+
grpc_slice grpc_httpcli_format_get_request(
|
69
|
+
const grpc_httpcli_request *request) {
|
68
70
|
gpr_strvec out;
|
69
71
|
char *flat;
|
70
72
|
size_t flat_len;
|
71
73
|
|
72
74
|
gpr_strvec_init(&out);
|
73
75
|
gpr_strvec_add(&out, gpr_strdup("GET "));
|
74
|
-
fill_common_header(request, &out);
|
76
|
+
fill_common_header(request, &out, true);
|
75
77
|
gpr_strvec_add(&out, gpr_strdup("\r\n"));
|
76
78
|
|
77
79
|
flat = gpr_strvec_flatten(&out, &flat_len);
|
78
80
|
gpr_strvec_destroy(&out);
|
79
81
|
|
80
|
-
return
|
82
|
+
return grpc_slice_new(flat, flat_len, gpr_free);
|
81
83
|
}
|
82
84
|
|
83
|
-
|
84
|
-
|
85
|
-
|
85
|
+
grpc_slice grpc_httpcli_format_post_request(const grpc_httpcli_request *request,
|
86
|
+
const char *body_bytes,
|
87
|
+
size_t body_size) {
|
86
88
|
gpr_strvec out;
|
87
89
|
char *tmp;
|
88
90
|
size_t out_len;
|
@@ -91,7 +93,7 @@ gpr_slice grpc_httpcli_format_post_request(const grpc_httpcli_request *request,
|
|
91
93
|
gpr_strvec_init(&out);
|
92
94
|
|
93
95
|
gpr_strvec_add(&out, gpr_strdup("POST "));
|
94
|
-
fill_common_header(request, &out);
|
96
|
+
fill_common_header(request, &out, true);
|
95
97
|
if (body_bytes) {
|
96
98
|
uint8_t has_content_type = 0;
|
97
99
|
for (i = 0; i < request->http.hdr_count; i++) {
|
@@ -116,5 +118,18 @@ gpr_slice grpc_httpcli_format_post_request(const grpc_httpcli_request *request,
|
|
116
118
|
out_len += body_size;
|
117
119
|
}
|
118
120
|
|
119
|
-
return
|
121
|
+
return grpc_slice_new(tmp, out_len, gpr_free);
|
122
|
+
}
|
123
|
+
|
124
|
+
grpc_slice grpc_httpcli_format_connect_request(
|
125
|
+
const grpc_httpcli_request *request) {
|
126
|
+
gpr_strvec out;
|
127
|
+
gpr_strvec_init(&out);
|
128
|
+
gpr_strvec_add(&out, gpr_strdup("CONNECT "));
|
129
|
+
fill_common_header(request, &out, false);
|
130
|
+
gpr_strvec_add(&out, gpr_strdup("\r\n"));
|
131
|
+
size_t flat_len;
|
132
|
+
char *flat = gpr_strvec_flatten(&out, &flat_len);
|
133
|
+
gpr_strvec_destroy(&out);
|
134
|
+
return grpc_slice_new(flat, flat_len, gpr_free);
|
120
135
|
}
|
@@ -34,12 +34,14 @@
|
|
34
34
|
#ifndef GRPC_CORE_LIB_HTTP_FORMAT_REQUEST_H
|
35
35
|
#define GRPC_CORE_LIB_HTTP_FORMAT_REQUEST_H
|
36
36
|
|
37
|
-
#include <grpc/
|
37
|
+
#include <grpc/slice.h>
|
38
38
|
#include "src/core/lib/http/httpcli.h"
|
39
39
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
40
|
+
grpc_slice grpc_httpcli_format_get_request(const grpc_httpcli_request *request);
|
41
|
+
grpc_slice grpc_httpcli_format_post_request(const grpc_httpcli_request *request,
|
42
|
+
const char *body_bytes,
|
43
|
+
size_t body_size);
|
44
|
+
grpc_slice grpc_httpcli_format_connect_request(
|
45
|
+
const grpc_httpcli_request *request);
|
44
46
|
|
45
47
|
#endif /* GRPC_CORE_LIB_HTTP_FORMAT_REQUEST_H */
|
data/src/core/lib/http/httpcli.c
CHANGED
@@ -32,7 +32,6 @@
|
|
32
32
|
*/
|
33
33
|
|
34
34
|
#include "src/core/lib/http/httpcli.h"
|
35
|
-
#include "src/core/lib/iomgr/sockaddr.h"
|
36
35
|
|
37
36
|
#include <string.h>
|
38
37
|
|
@@ -48,10 +47,11 @@
|
|
48
47
|
#include "src/core/lib/iomgr/resolve_address.h"
|
49
48
|
#include "src/core/lib/iomgr/sockaddr_utils.h"
|
50
49
|
#include "src/core/lib/iomgr/tcp_client.h"
|
50
|
+
#include "src/core/lib/slice/slice_internal.h"
|
51
51
|
#include "src/core/lib/support/string.h"
|
52
52
|
|
53
53
|
typedef struct {
|
54
|
-
|
54
|
+
grpc_slice request_text;
|
55
55
|
grpc_http_parser parser;
|
56
56
|
grpc_resolved_addresses *addresses;
|
57
57
|
size_t next_address;
|
@@ -65,12 +65,13 @@ typedef struct {
|
|
65
65
|
grpc_httpcli_context *context;
|
66
66
|
grpc_polling_entity *pollent;
|
67
67
|
grpc_iomgr_object iomgr_obj;
|
68
|
-
|
69
|
-
|
68
|
+
grpc_slice_buffer incoming;
|
69
|
+
grpc_slice_buffer outgoing;
|
70
70
|
grpc_closure on_read;
|
71
71
|
grpc_closure done_write;
|
72
72
|
grpc_closure connected;
|
73
73
|
grpc_error *overall_error;
|
74
|
+
grpc_resource_quota *resource_quota;
|
74
75
|
} internal_request;
|
75
76
|
|
76
77
|
static grpc_httpcli_get_override g_get_override = NULL;
|
@@ -103,7 +104,7 @@ static void finish(grpc_exec_ctx *exec_ctx, internal_request *req,
|
|
103
104
|
grpc_error *error) {
|
104
105
|
grpc_polling_entity_del_from_pollset_set(exec_ctx, req->pollent,
|
105
106
|
req->context->pollset_set);
|
106
|
-
|
107
|
+
grpc_closure_sched(exec_ctx, req->on_done, error);
|
107
108
|
grpc_http_parser_destroy(&req->parser);
|
108
109
|
if (req->addresses != NULL) {
|
109
110
|
grpc_resolved_addresses_destroy(req->addresses);
|
@@ -111,13 +112,14 @@ static void finish(grpc_exec_ctx *exec_ctx, internal_request *req,
|
|
111
112
|
if (req->ep != NULL) {
|
112
113
|
grpc_endpoint_destroy(exec_ctx, req->ep);
|
113
114
|
}
|
114
|
-
|
115
|
+
grpc_slice_unref_internal(exec_ctx, req->request_text);
|
115
116
|
gpr_free(req->host);
|
116
117
|
gpr_free(req->ssl_host_override);
|
117
118
|
grpc_iomgr_unregister_object(&req->iomgr_obj);
|
118
|
-
|
119
|
-
|
119
|
+
grpc_slice_buffer_destroy_internal(exec_ctx, &req->incoming);
|
120
|
+
grpc_slice_buffer_destroy_internal(exec_ctx, &req->outgoing);
|
120
121
|
GRPC_ERROR_UNREF(req->overall_error);
|
122
|
+
grpc_resource_quota_unref_internal(exec_ctx, req->resource_quota);
|
121
123
|
gpr_free(req);
|
122
124
|
}
|
123
125
|
|
@@ -126,7 +128,7 @@ static void append_error(internal_request *req, grpc_error *error) {
|
|
126
128
|
req->overall_error = GRPC_ERROR_CREATE("Failed HTTP/1 client request");
|
127
129
|
}
|
128
130
|
grpc_resolved_address *addr = &req->addresses->addrs[req->next_address - 1];
|
129
|
-
char *addr_text = grpc_sockaddr_to_uri(
|
131
|
+
char *addr_text = grpc_sockaddr_to_uri(addr);
|
130
132
|
req->overall_error = grpc_error_add_child(
|
131
133
|
req->overall_error,
|
132
134
|
grpc_error_set_str(error, GRPC_ERROR_STR_TARGET_ADDRESS, addr_text));
|
@@ -143,10 +145,10 @@ static void on_read(grpc_exec_ctx *exec_ctx, void *user_data,
|
|
143
145
|
size_t i;
|
144
146
|
|
145
147
|
for (i = 0; i < req->incoming.count; i++) {
|
146
|
-
if (
|
148
|
+
if (GRPC_SLICE_LENGTH(req->incoming.slices[i])) {
|
147
149
|
req->have_read_byte = 1;
|
148
150
|
grpc_error *err =
|
149
|
-
grpc_http_parser_parse(&req->parser, req->incoming.slices[i]);
|
151
|
+
grpc_http_parser_parse(&req->parser, req->incoming.slices[i], NULL);
|
150
152
|
if (err != GRPC_ERROR_NONE) {
|
151
153
|
finish(exec_ctx, req, err);
|
152
154
|
return;
|
@@ -177,8 +179,8 @@ static void done_write(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
|
|
177
179
|
}
|
178
180
|
|
179
181
|
static void start_write(grpc_exec_ctx *exec_ctx, internal_request *req) {
|
180
|
-
|
181
|
-
|
182
|
+
grpc_slice_ref_internal(req->request_text);
|
183
|
+
grpc_slice_buffer_add(&req->outgoing, req->request_text);
|
182
184
|
grpc_endpoint_write(exec_ctx, req->ep, &req->outgoing, &req->done_write);
|
183
185
|
}
|
184
186
|
|
@@ -223,10 +225,17 @@ static void next_address(grpc_exec_ctx *exec_ctx, internal_request *req,
|
|
223
225
|
return;
|
224
226
|
}
|
225
227
|
addr = &req->addresses->addrs[req->next_address++];
|
226
|
-
grpc_closure_init(&req->connected, on_connected, req
|
227
|
-
|
228
|
-
|
229
|
-
|
228
|
+
grpc_closure_init(&req->connected, on_connected, req,
|
229
|
+
grpc_schedule_on_exec_ctx);
|
230
|
+
grpc_arg arg;
|
231
|
+
arg.key = GRPC_ARG_RESOURCE_QUOTA;
|
232
|
+
arg.type = GRPC_ARG_POINTER;
|
233
|
+
arg.value.pointer.p = req->resource_quota;
|
234
|
+
arg.value.pointer.vtable = grpc_resource_quota_arg_vtable();
|
235
|
+
grpc_channel_args args = {1, &arg};
|
236
|
+
grpc_tcp_client_connect(exec_ctx, &req->connected, &req->ep,
|
237
|
+
req->context->pollset_set, &args, addr,
|
238
|
+
req->deadline);
|
230
239
|
}
|
231
240
|
|
232
241
|
static void on_resolved(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
|
@@ -242,10 +251,11 @@ static void on_resolved(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
|
|
242
251
|
static void internal_request_begin(grpc_exec_ctx *exec_ctx,
|
243
252
|
grpc_httpcli_context *context,
|
244
253
|
grpc_polling_entity *pollent,
|
254
|
+
grpc_resource_quota *resource_quota,
|
245
255
|
const grpc_httpcli_request *request,
|
246
256
|
gpr_timespec deadline, grpc_closure *on_done,
|
247
257
|
grpc_httpcli_response *response,
|
248
|
-
const char *name,
|
258
|
+
const char *name, grpc_slice request_text) {
|
249
259
|
internal_request *req = gpr_malloc(sizeof(internal_request));
|
250
260
|
memset(req, 0, sizeof(*req));
|
251
261
|
req->request_text = request_text;
|
@@ -257,10 +267,12 @@ static void internal_request_begin(grpc_exec_ctx *exec_ctx,
|
|
257
267
|
req->context = context;
|
258
268
|
req->pollent = pollent;
|
259
269
|
req->overall_error = GRPC_ERROR_NONE;
|
260
|
-
|
261
|
-
grpc_closure_init(&req->
|
262
|
-
|
263
|
-
|
270
|
+
req->resource_quota = grpc_resource_quota_ref_internal(resource_quota);
|
271
|
+
grpc_closure_init(&req->on_read, on_read, req, grpc_schedule_on_exec_ctx);
|
272
|
+
grpc_closure_init(&req->done_write, done_write, req,
|
273
|
+
grpc_schedule_on_exec_ctx);
|
274
|
+
grpc_slice_buffer_init(&req->incoming);
|
275
|
+
grpc_slice_buffer_init(&req->outgoing);
|
264
276
|
grpc_iomgr_register_object(&req->iomgr_obj, name);
|
265
277
|
req->host = gpr_strdup(request->host);
|
266
278
|
req->ssl_host_override = gpr_strdup(request->ssl_host_override);
|
@@ -268,12 +280,16 @@ static void internal_request_begin(grpc_exec_ctx *exec_ctx,
|
|
268
280
|
GPR_ASSERT(pollent);
|
269
281
|
grpc_polling_entity_add_to_pollset_set(exec_ctx, req->pollent,
|
270
282
|
req->context->pollset_set);
|
271
|
-
grpc_resolve_address(
|
272
|
-
|
283
|
+
grpc_resolve_address(
|
284
|
+
exec_ctx, request->host, req->handshaker->default_port,
|
285
|
+
req->context->pollset_set,
|
286
|
+
grpc_closure_create(on_resolved, req, grpc_schedule_on_exec_ctx),
|
287
|
+
&req->addresses);
|
273
288
|
}
|
274
289
|
|
275
290
|
void grpc_httpcli_get(grpc_exec_ctx *exec_ctx, grpc_httpcli_context *context,
|
276
291
|
grpc_polling_entity *pollent,
|
292
|
+
grpc_resource_quota *resource_quota,
|
277
293
|
const grpc_httpcli_request *request,
|
278
294
|
gpr_timespec deadline, grpc_closure *on_done,
|
279
295
|
grpc_httpcli_response *response) {
|
@@ -283,14 +299,15 @@ void grpc_httpcli_get(grpc_exec_ctx *exec_ctx, grpc_httpcli_context *context,
|
|
283
299
|
return;
|
284
300
|
}
|
285
301
|
gpr_asprintf(&name, "HTTP:GET:%s:%s", request->host, request->http.path);
|
286
|
-
internal_request_begin(exec_ctx, context, pollent,
|
287
|
-
response, name,
|
302
|
+
internal_request_begin(exec_ctx, context, pollent, resource_quota, request,
|
303
|
+
deadline, on_done, response, name,
|
288
304
|
grpc_httpcli_format_get_request(request));
|
289
305
|
gpr_free(name);
|
290
306
|
}
|
291
307
|
|
292
308
|
void grpc_httpcli_post(grpc_exec_ctx *exec_ctx, grpc_httpcli_context *context,
|
293
309
|
grpc_polling_entity *pollent,
|
310
|
+
grpc_resource_quota *resource_quota,
|
294
311
|
const grpc_httpcli_request *request,
|
295
312
|
const char *body_bytes, size_t body_size,
|
296
313
|
gpr_timespec deadline, grpc_closure *on_done,
|
@@ -303,7 +320,8 @@ void grpc_httpcli_post(grpc_exec_ctx *exec_ctx, grpc_httpcli_context *context,
|
|
303
320
|
}
|
304
321
|
gpr_asprintf(&name, "HTTP:POST:%s:%s", request->host, request->http.path);
|
305
322
|
internal_request_begin(
|
306
|
-
exec_ctx, context, pollent, request, deadline, on_done,
|
323
|
+
exec_ctx, context, pollent, resource_quota, request, deadline, on_done,
|
324
|
+
response, name,
|
307
325
|
grpc_httpcli_format_post_request(request, body_bytes, body_size));
|
308
326
|
gpr_free(name);
|
309
327
|
}
|