grpc 1.8.7 → 1.9.0.pre1
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 +549 -325
- data/include/grpc/impl/codegen/grpc_types.h +1 -2
- data/include/grpc/impl/codegen/port_platform.h +46 -5
- data/include/grpc/impl/codegen/slice.h +1 -2
- data/include/grpc/module.modulemap +0 -2
- data/include/grpc/slice_buffer.h +1 -2
- data/include/grpc/support/log.h +4 -2
- data/include/grpc/support/thd.h +4 -1
- data/include/grpc/support/tls.h +6 -0
- data/include/grpc/support/tls_gcc.h +5 -40
- data/include/grpc/support/tls_msvc.h +9 -0
- data/include/grpc/support/tls_pthread.h +9 -0
- data/src/core/ext/filters/client_channel/backup_poller.cc +32 -29
- data/src/core/ext/filters/client_channel/backup_poller.h +2 -2
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +26 -32
- data/src/core/ext/filters/client_channel/client_channel.cc +325 -356
- data/src/core/ext/filters/client_channel/client_channel.h +4 -12
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +9 -14
- data/src/core/ext/filters/client_channel/client_channel_factory.h +7 -20
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +7 -10
- data/src/core/ext/filters/client_channel/connector.cc +6 -7
- data/src/core/ext/filters/client_channel/connector.h +6 -16
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +38 -50
- data/src/core/ext/filters/client_channel/http_connect_handshaker.h +0 -8
- data/src/core/ext/filters/client_channel/http_proxy.cc +9 -13
- data/src/core/ext/filters/client_channel/http_proxy.h +0 -8
- data/src/core/ext/filters/client_channel/lb_policy.cc +72 -94
- data/src/core/ext/filters/client_channel/lb_policy.h +83 -92
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +14 -19
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +0 -8
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +474 -591
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +0 -8
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +2 -10
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +6 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +0 -8
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +0 -9
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +0 -9
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c +3 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h +9 -12
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +160 -182
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +182 -221
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.cc +24 -35
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +9 -20
- data/src/core/ext/filters/client_channel/lb_policy_factory.cc +6 -9
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +4 -15
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +3 -3
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -9
- data/src/core/ext/filters/client_channel/parse_address.cc +1 -1
- data/src/core/ext/filters/client_channel/parse_address.h +0 -8
- data/src/core/ext/filters/client_channel/proxy_mapper.cc +6 -8
- data/src/core/ext/filters/client_channel/proxy_mapper.h +6 -16
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +13 -17
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +2 -12
- data/src/core/ext/filters/client_channel/resolver.cc +11 -13
- data/src/core/ext/filters/client_channel/resolver.h +14 -25
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +57 -70
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +2 -12
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +23 -31
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +27 -45
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +5 -15
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +9 -11
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +53 -66
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +25 -33
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +1 -9
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +26 -35
- data/src/core/ext/filters/client_channel/resolver_factory.cc +2 -3
- data/src/core/ext/filters/client_channel/resolver_factory.h +2 -12
- data/src/core/ext/filters/client_channel/resolver_registry.cc +12 -15
- data/src/core/ext/filters/client_channel/resolver_registry.h +3 -12
- data/src/core/ext/filters/client_channel/retry_throttle.h +0 -8
- data/src/core/ext/filters/client_channel/subchannel.cc +289 -301
- data/src/core/ext/filters/client_channel/subchannel.h +57 -84
- data/src/core/ext/filters/client_channel/subchannel_index.cc +30 -33
- data/src/core/ext/filters/client_channel/subchannel_index.h +4 -16
- data/src/core/ext/filters/client_channel/uri_parser.cc +13 -17
- data/src/core/ext/filters/client_channel/uri_parser.h +1 -10
- data/src/core/ext/filters/deadline/deadline_filter.cc +49 -67
- data/src/core/ext/filters/deadline/deadline_filter.h +4 -14
- data/src/core/ext/filters/http/client/http_client_filter.cc +60 -77
- data/src/core/ext/filters/http/client/http_client_filter.h +0 -8
- data/src/core/ext/filters/http/http_filters_plugin.cc +4 -6
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +63 -79
- data/src/core/ext/filters/http/message_compress/message_compress_filter.h +0 -8
- data/src/core/ext/filters/http/server/http_server_filter.cc +57 -71
- data/src/core/ext/filters/http/server/http_server_filter.h +0 -8
- data/src/core/ext/filters/load_reporting/server_load_reporting_filter.cc +19 -24
- data/src/core/ext/filters/load_reporting/server_load_reporting_filter.h +0 -8
- data/src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc +3 -3
- data/src/core/ext/filters/load_reporting/server_load_reporting_plugin.h +0 -8
- data/src/core/ext/filters/max_age/max_age_filter.cc +49 -62
- data/src/core/ext/filters/max_age/max_age_filter.h +0 -8
- data/src/core/ext/filters/message_size/message_size_filter.cc +23 -29
- data/src/core/ext/filters/message_size/message_size_filter.h +0 -8
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +15 -18
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h +0 -8
- data/src/core/ext/filters/workarounds/workaround_utils.h +0 -8
- data/src/core/ext/transport/chttp2/alpn/alpn.h +0 -8
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +33 -40
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +0 -8
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +15 -17
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +8 -8
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +23 -28
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +50 -57
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +1 -10
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +3 -3
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +7 -10
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +5 -6
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +7 -9
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -11
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -9
- data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +10 -2
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +516 -636
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +4 -11
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +29 -13
- data/src/core/ext/transport/chttp2/transport/flow_control.h +196 -53
- data/src/core/ext/transport/chttp2/transport/frame.h +0 -8
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +31 -33
- data/src/core/ext/transport/chttp2/transport/frame_data.h +3 -12
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +1 -10
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -6
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +1 -9
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +1 -10
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +8 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +1 -10
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +8 -8
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +5 -11
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +63 -81
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +2 -12
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +230 -318
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +6 -19
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +14 -20
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +5 -16
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +0 -7
- data/src/core/ext/transport/chttp2/transport/huffsyms.h +0 -8
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +8 -11
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +4 -13
- data/src/core/ext/transport/chttp2/transport/internal.h +51 -75
- data/src/core/ext/transport/chttp2/transport/parsing.cc +83 -109
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/stream_map.h +0 -8
- data/src/core/ext/transport/chttp2/transport/varint.h +0 -8
- data/src/core/ext/transport/chttp2/transport/writing.cc +61 -65
- data/src/core/ext/transport/inproc/inproc_plugin.cc +2 -4
- data/src/core/ext/transport/inproc/inproc_transport.cc +177 -188
- data/src/core/ext/transport/inproc/inproc_transport.h +0 -8
- data/src/core/lib/backoff/backoff.cc +39 -44
- data/src/core/lib/backoff/backoff.h +61 -57
- data/src/core/lib/channel/channel_args.cc +8 -10
- data/src/core/lib/channel/channel_args.h +4 -13
- data/src/core/lib/channel/channel_stack.cc +19 -27
- data/src/core/lib/channel/channel_stack.h +27 -47
- data/src/core/lib/channel/channel_stack_builder.cc +11 -14
- data/src/core/lib/channel/channel_stack_builder.h +4 -15
- data/src/core/lib/channel/connected_channel.cc +23 -36
- data/src/core/lib/channel/connected_channel.h +1 -10
- data/src/core/lib/channel/handshaker.cc +31 -40
- data/src/core/lib/channel/handshaker.h +14 -25
- data/src/core/lib/channel/handshaker_factory.cc +6 -6
- data/src/core/lib/channel/handshaker_factory.h +5 -15
- data/src/core/lib/channel/handshaker_registry.cc +9 -13
- data/src/core/lib/channel/handshaker_registry.h +2 -11
- data/src/core/lib/compression/algorithm_metadata.h +0 -8
- data/src/core/lib/compression/message_compress.cc +19 -23
- data/src/core/lib/compression/message_compress.h +2 -12
- data/src/core/lib/compression/stream_compression.cc +1 -1
- data/src/core/lib/compression/stream_compression.h +0 -8
- data/src/core/lib/compression/stream_compression_gzip.cc +12 -11
- data/src/core/lib/compression/stream_compression_gzip.h +0 -8
- data/src/core/lib/compression/stream_compression_identity.h +0 -8
- data/src/core/lib/debug/stats.cc +4 -4
- data/src/core/lib/debug/stats.h +9 -19
- data/src/core/lib/debug/stats_data.cc +85 -116
- data/src/core/lib/debug/stats_data.h +236 -312
- data/src/core/lib/debug/trace.cc +1 -1
- data/src/core/lib/debug/trace.h +0 -12
- data/src/core/lib/{support → gpr++}/abstract.h +8 -3
- data/src/core/lib/{support → gpr++}/atomic.h +5 -5
- data/src/core/lib/{support → gpr++}/atomic_with_atm.h +3 -3
- data/src/core/lib/{support → gpr++}/atomic_with_std.h +3 -3
- data/src/core/lib/gpr++/debug_location.h +52 -0
- data/src/core/lib/gpr++/inlined_vector.h +112 -0
- data/src/core/lib/{support → gpr++}/manual_constructor.h +2 -2
- data/src/core/lib/{support → gpr++}/memory.h +3 -3
- data/src/core/lib/gpr++/orphanable.h +171 -0
- data/src/core/lib/gpr++/ref_counted.h +133 -0
- data/src/core/lib/gpr++/ref_counted_ptr.h +99 -0
- data/src/core/lib/{support → gpr}/alloc.cc +0 -0
- data/src/core/lib/{support → gpr}/arena.cc +1 -1
- data/src/core/lib/{support → gpr}/arena.h +3 -11
- data/src/core/lib/{support → gpr}/atm.cc +0 -0
- data/src/core/lib/{support → gpr}/avl.cc +0 -0
- data/src/core/lib/{support → gpr}/cmdline.cc +1 -1
- data/src/core/lib/{support → gpr}/cpu_iphone.cc +0 -0
- data/src/core/lib/{support → gpr}/cpu_linux.cc +0 -0
- data/src/core/lib/{support → gpr}/cpu_posix.cc +0 -0
- data/src/core/lib/{support → gpr}/cpu_windows.cc +0 -0
- data/src/core/lib/{support → gpr}/env.h +3 -11
- data/src/core/lib/{support → gpr}/env_linux.cc +2 -2
- data/src/core/lib/{support → gpr}/env_posix.cc +4 -4
- data/src/core/lib/{support → gpr}/env_windows.cc +3 -3
- data/src/core/lib/{support → gpr}/fork.cc +3 -3
- data/src/core/lib/{support → gpr}/fork.h +3 -3
- data/src/core/lib/{support → gpr}/host_port.cc +1 -1
- data/src/core/lib/{support → gpr}/log.cc +3 -3
- data/src/core/lib/{support → gpr}/log_android.cc +3 -3
- data/src/core/lib/{support → gpr}/log_linux.cc +1 -1
- data/src/core/lib/{support → gpr}/log_posix.cc +5 -5
- data/src/core/lib/{support → gpr}/log_windows.cc +3 -3
- data/src/core/lib/{support → gpr}/mpscq.cc +1 -1
- data/src/core/lib/{support → gpr}/mpscq.h +3 -10
- data/src/core/lib/{support → gpr}/murmur_hash.cc +1 -1
- data/src/core/lib/{support → gpr}/murmur_hash.h +3 -11
- data/src/core/lib/{support → gpr}/spinlock.h +3 -3
- data/src/core/lib/{support → gpr}/string.cc +1 -1
- data/src/core/lib/{support → gpr}/string.h +3 -10
- data/src/core/lib/{support → gpr}/string_posix.cc +0 -0
- data/src/core/lib/{support → gpr}/string_util_windows.cc +2 -2
- data/src/core/lib/{support → gpr}/string_windows.cc +1 -1
- data/src/core/lib/{support → gpr}/string_windows.h +3 -11
- data/src/core/lib/{support → gpr}/subprocess_posix.cc +0 -0
- data/src/core/lib/{support → gpr}/subprocess_windows.cc +2 -2
- data/src/core/lib/{support → gpr}/sync.cc +0 -0
- data/src/core/lib/{support → gpr}/sync_posix.cc +10 -1
- data/src/core/lib/{support → gpr}/sync_windows.cc +0 -0
- data/src/core/lib/{support → gpr}/thd.cc +0 -0
- data/src/core/lib/{support → gpr}/thd_internal.h +3 -3
- data/src/core/lib/{support → gpr}/thd_posix.cc +18 -2
- data/src/core/lib/{support → gpr}/thd_windows.cc +2 -1
- data/src/core/lib/{support → gpr}/time.cc +0 -0
- data/src/core/lib/{support → gpr}/time_posix.cc +2 -4
- data/src/core/lib/{support → gpr}/time_precise.cc +1 -1
- data/src/core/lib/{support → gpr}/time_precise.h +3 -11
- data/src/core/lib/{support → gpr}/time_windows.cc +1 -3
- data/src/core/lib/{support → gpr}/tls_pthread.cc +0 -0
- data/src/core/lib/{support → gpr}/tmpfile.h +3 -11
- data/src/core/lib/{support → gpr}/tmpfile_msys.cc +2 -2
- data/src/core/lib/{support → gpr}/tmpfile_posix.cc +2 -2
- data/src/core/lib/{support → gpr}/tmpfile_windows.cc +2 -2
- data/src/core/lib/{support → gpr}/wrap_memcpy.cc +0 -0
- data/src/core/lib/http/format_request.cc +1 -1
- data/src/core/lib/http/format_request.h +0 -8
- data/src/core/lib/http/httpcli.cc +55 -74
- data/src/core/lib/http/httpcli.h +13 -22
- data/src/core/lib/http/httpcli_security_connector.cc +27 -33
- data/src/core/lib/http/parser.h +0 -8
- data/src/core/lib/iomgr/block_annotate.h +10 -17
- data/src/core/lib/iomgr/call_combiner.cc +14 -17
- data/src/core/lib/iomgr/call_combiner.h +16 -34
- data/src/core/lib/iomgr/closure.h +24 -37
- data/src/core/lib/iomgr/combiner.cc +62 -66
- data/src/core/lib/iomgr/combiner.h +6 -16
- data/src/core/lib/iomgr/endpoint.cc +15 -21
- data/src/core/lib/iomgr/endpoint.h +16 -33
- data/src/core/lib/iomgr/endpoint_pair.h +0 -8
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +4 -5
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +4 -6
- data/src/core/lib/iomgr/error.cc +2 -6
- data/src/core/lib/iomgr/error.h +4 -9
- data/src/core/lib/iomgr/error_internal.h +0 -8
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +110 -117
- data/src/core/lib/iomgr/ev_epoll1_linux.h +0 -8
- data/src/core/lib/iomgr/ev_epollex_linux.cc +111 -141
- data/src/core/lib/iomgr/ev_epollex_linux.h +0 -8
- data/src/core/lib/iomgr/ev_epollsig_linux.cc +83 -109
- data/src/core/lib/iomgr/ev_epollsig_linux.h +2 -10
- data/src/core/lib/iomgr/ev_poll_posix.cc +103 -125
- data/src/core/lib/iomgr/ev_poll_posix.h +0 -8
- data/src/core/lib/iomgr/ev_posix.cc +35 -50
- data/src/core/lib/iomgr/ev_posix.h +27 -53
- data/src/core/lib/iomgr/exec_ctx.cc +46 -78
- data/src/core/lib/iomgr/exec_ctx.h +127 -60
- data/src/core/lib/iomgr/executor.cc +34 -38
- data/src/core/lib/iomgr/executor.h +3 -11
- data/src/core/lib/iomgr/fork_posix.cc +13 -12
- data/src/core/lib/iomgr/gethostname.h +0 -8
- data/src/core/lib/iomgr/gethostname_sysconf.cc +1 -1
- data/src/core/lib/iomgr/iocp_windows.cc +14 -16
- data/src/core/lib/iomgr/iocp_windows.h +1 -10
- data/src/core/lib/iomgr/iomgr.cc +60 -59
- data/src/core/lib/iomgr/iomgr.h +3 -12
- data/src/core/lib/iomgr/iomgr_internal.h +0 -8
- data/src/core/lib/iomgr/iomgr_uv.cc +2 -3
- data/src/core/lib/iomgr/iomgr_uv.h +0 -8
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +1 -1
- data/src/core/lib/iomgr/load_file.cc +1 -1
- data/src/core/lib/iomgr/load_file.h +0 -8
- data/src/core/lib/iomgr/lockfree_event.cc +7 -8
- data/src/core/lib/iomgr/lockfree_event.h +3 -3
- data/src/core/lib/iomgr/polling_entity.cc +6 -10
- data/src/core/lib/iomgr/polling_entity.h +2 -11
- data/src/core/lib/iomgr/pollset.h +4 -13
- data/src/core/lib/iomgr/pollset_set.h +5 -18
- data/src/core/lib/iomgr/pollset_set_uv.cc +5 -10
- data/src/core/lib/iomgr/pollset_set_windows.cc +5 -10
- data/src/core/lib/iomgr/pollset_uv.cc +8 -9
- data/src/core/lib/iomgr/pollset_uv.h +0 -8
- data/src/core/lib/iomgr/pollset_windows.cc +14 -15
- data/src/core/lib/iomgr/pollset_windows.h +0 -8
- data/src/core/lib/iomgr/port.h +6 -1
- data/src/core/lib/iomgr/resolve_address.h +1 -10
- data/src/core/lib/iomgr/resolve_address_posix.cc +10 -12
- data/src/core/lib/iomgr/resolve_address_uv.cc +7 -8
- data/src/core/lib/iomgr/resolve_address_windows.cc +8 -9
- data/src/core/lib/iomgr/resource_quota.cc +77 -107
- data/src/core/lib/iomgr/resource_quota.h +8 -25
- data/src/core/lib/iomgr/sockaddr_utils.cc +1 -1
- data/src/core/lib/iomgr/sockaddr_utils.h +0 -8
- data/src/core/lib/iomgr/socket_factory_posix.cc +1 -1
- data/src/core/lib/iomgr/socket_factory_posix.h +0 -8
- data/src/core/lib/iomgr/socket_mutator.cc +1 -1
- data/src/core/lib/iomgr/socket_mutator.h +1 -9
- data/src/core/lib/iomgr/socket_utils.h +0 -8
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_posix.h +0 -8
- data/src/core/lib/iomgr/socket_windows.cc +8 -11
- data/src/core/lib/iomgr/socket_windows.h +3 -14
- data/src/core/lib/iomgr/tcp_client.h +1 -10
- data/src/core/lib/iomgr/tcp_client_posix.cc +94 -78
- data/src/core/lib/iomgr/tcp_client_posix.h +36 -8
- data/src/core/lib/iomgr/tcp_client_uv.cc +16 -23
- data/src/core/lib/iomgr/tcp_client_windows.cc +22 -25
- data/src/core/lib/iomgr/tcp_posix.cc +131 -153
- data/src/core/lib/iomgr/tcp_posix.h +3 -12
- data/src/core/lib/iomgr/tcp_server.h +6 -17
- data/src/core/lib/iomgr/tcp_server_posix.cc +31 -35
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +0 -8
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +1 -1
- data/src/core/lib/iomgr/tcp_server_uv.cc +23 -34
- data/src/core/lib/iomgr/tcp_server_windows.cc +24 -34
- data/src/core/lib/iomgr/tcp_uv.cc +42 -56
- data/src/core/lib/iomgr/tcp_uv.h +0 -8
- data/src/core/lib/iomgr/tcp_windows.cc +43 -50
- data/src/core/lib/iomgr/tcp_windows.h +1 -9
- data/src/core/lib/iomgr/time_averaged_stats.h +0 -8
- data/src/core/lib/iomgr/timer.h +6 -15
- data/src/core/lib/iomgr/timer_generic.cc +22 -27
- data/src/core/lib/iomgr/timer_heap.h +0 -8
- data/src/core/lib/iomgr/timer_manager.cc +17 -19
- data/src/core/lib/iomgr/timer_manager.h +0 -8
- data/src/core/lib/iomgr/timer_uv.cc +12 -14
- data/src/core/lib/iomgr/udp_server.cc +148 -54
- data/src/core/lib/iomgr/udp_server.h +16 -21
- data/src/core/lib/iomgr/unix_sockets_posix.h +0 -8
- data/src/core/lib/iomgr/wakeup_fd_cv.cc +4 -4
- data/src/core/lib/iomgr/wakeup_fd_cv.h +12 -20
- data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +1 -1
- data/src/core/lib/iomgr/wakeup_fd_pipe.h +0 -8
- data/src/core/lib/iomgr/wakeup_fd_posix.h +0 -8
- data/src/core/lib/json/json.h +0 -8
- data/src/core/lib/json/json_reader.h +0 -8
- data/src/core/lib/json/json_writer.h +0 -8
- data/src/core/lib/profiling/basic_timers.cc +3 -2
- data/src/core/lib/profiling/timers.h +0 -8
- data/src/core/lib/security/context/security_context.cc +9 -10
- data/src/core/lib/security/context/security_context.h +0 -8
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +23 -28
- data/src/core/lib/security/credentials/composite/composite_credentials.h +0 -8
- data/src/core/lib/security/credentials/credentials.cc +33 -42
- data/src/core/lib/security/credentials/credentials.h +24 -43
- data/src/core/lib/security/credentials/credentials_metadata.cc +2 -2
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +16 -22
- data/src/core/lib/security/credentials/fake/fake_credentials.h +0 -8
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +3 -3
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +28 -34
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +0 -8
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +9 -13
- data/src/core/lib/security/credentials/jwt/json_token.cc +1 -1
- data/src/core/lib/security/credentials/jwt/json_token.h +0 -8
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +14 -20
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +1 -10
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +56 -72
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +5 -17
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +47 -55
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +3 -12
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +23 -28
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +8 -13
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +0 -8
- data/src/core/lib/security/transport/auth_filters.h +0 -8
- data/src/core/lib/security/transport/client_auth_filter.cc +45 -54
- data/src/core/lib/security/transport/lb_targets_info.cc +2 -2
- data/src/core/lib/security/transport/lb_targets_info.h +0 -8
- data/src/core/lib/security/transport/secure_endpoint.cc +54 -68
- data/src/core/lib/security/transport/secure_endpoint.h +0 -8
- data/src/core/lib/security/transport/security_connector.cc +62 -86
- data/src/core/lib/security/transport/security_connector.h +22 -39
- data/src/core/lib/security/transport/security_handshaker.cc +83 -106
- data/src/core/lib/security/transport/security_handshaker.h +1 -10
- data/src/core/lib/security/transport/server_auth_filter.cc +31 -38
- data/src/core/lib/security/transport/tsi_error.h +0 -8
- data/src/core/lib/security/util/json_util.h +0 -8
- data/src/core/lib/slice/b64.cc +5 -6
- data/src/core/lib/slice/b64.h +3 -12
- data/src/core/lib/slice/percent_encoding.h +0 -8
- data/src/core/lib/slice/slice.cc +8 -9
- data/src/core/lib/slice/slice_buffer.cc +11 -16
- data/src/core/lib/slice/slice_hash_table.cc +5 -7
- data/src/core/lib/slice/slice_hash_table.h +2 -12
- data/src/core/lib/slice/slice_intern.cc +4 -5
- data/src/core/lib/slice/slice_internal.h +4 -15
- data/src/core/lib/slice/slice_string_helpers.cc +1 -1
- data/src/core/lib/slice/slice_string_helpers.h +1 -9
- data/src/core/lib/surface/alarm.cc +11 -14
- data/src/core/lib/surface/alarm_internal.h +0 -8
- data/src/core/lib/surface/byte_buffer.cc +2 -3
- data/src/core/lib/surface/byte_buffer_reader.cc +7 -9
- data/src/core/lib/surface/call.cc +198 -241
- data/src/core/lib/surface/call.h +9 -23
- data/src/core/lib/surface/call_details.cc +3 -4
- data/src/core/lib/surface/call_log_batch.cc +1 -1
- data/src/core/lib/surface/call_test_only.h +0 -8
- data/src/core/lib/surface/channel.cc +53 -64
- data/src/core/lib/surface/channel.h +12 -23
- data/src/core/lib/surface/channel_init.cc +2 -3
- data/src/core/lib/surface/channel_init.h +2 -12
- data/src/core/lib/surface/channel_ping.cc +7 -9
- data/src/core/lib/surface/channel_stack_type.h +0 -8
- data/src/core/lib/surface/completion_queue.cc +158 -176
- data/src/core/lib/surface/completion_queue.h +9 -20
- data/src/core/lib/surface/completion_queue_factory.h +0 -8
- data/src/core/lib/surface/event_string.cc +1 -1
- data/src/core/lib/surface/event_string.h +0 -8
- data/src/core/lib/surface/init.cc +27 -25
- data/src/core/lib/surface/init.h +0 -8
- data/src/core/lib/surface/init_secure.cc +2 -2
- data/src/core/lib/surface/lame_client.cc +30 -33
- data/src/core/lib/surface/lame_client.h +0 -8
- data/src/core/lib/surface/server.cc +151 -203
- data/src/core/lib/surface/server.h +7 -16
- data/src/core/lib/surface/validate_metadata.h +0 -8
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.h +1 -1
- data/src/core/lib/transport/byte_stream.cc +24 -38
- data/src/core/lib/transport/byte_stream.h +10 -25
- data/src/core/lib/transport/connectivity_state.cc +9 -13
- data/src/core/lib/transport/connectivity_state.h +4 -14
- data/src/core/lib/transport/error_utils.cc +6 -6
- data/src/core/lib/transport/error_utils.h +2 -11
- data/src/core/lib/transport/metadata.cc +21 -23
- data/src/core/lib/transport/metadata.h +8 -20
- data/src/core/lib/transport/metadata_batch.cc +34 -45
- data/src/core/lib/transport/metadata_batch.h +18 -32
- data/src/core/lib/transport/service_config.cc +11 -15
- data/src/core/lib/transport/service_config.h +3 -13
- data/src/core/lib/transport/static_metadata.cc +1 -1
- data/src/core/lib/transport/static_metadata.h +1 -7
- data/src/core/lib/transport/status_conversion.cc +2 -3
- data/src/core/lib/transport/status_conversion.h +1 -10
- data/src/core/lib/transport/timeout_encoding.cc +1 -1
- data/src/core/lib/transport/timeout_encoding.h +1 -9
- data/src/core/lib/transport/transport.cc +36 -50
- data/src/core/lib/transport/transport.h +28 -30
- data/src/core/lib/transport/transport_impl.h +12 -23
- data/src/core/lib/transport/transport_op_string.cc +2 -2
- data/src/core/plugin_registry/grpc_plugin_registry.cc +34 -34
- data/src/core/tsi/fake_transport_security.cc +7 -10
- data/src/core/tsi/fake_transport_security.h +0 -8
- data/src/core/tsi/gts_transport_security.cc +2 -2
- data/src/core/tsi/gts_transport_security.h +0 -8
- data/src/core/tsi/ssl_transport_security.cc +3 -0
- data/src/core/tsi/ssl_transport_security.h +0 -8
- data/src/core/tsi/ssl_types.h +0 -8
- data/src/core/tsi/transport_security.h +1 -9
- data/src/core/tsi/transport_security_adapter.h +0 -8
- data/src/core/tsi/transport_security_grpc.cc +11 -18
- data/src/core/tsi/transport_security_grpc.h +9 -21
- data/src/core/tsi/transport_security_interface.h +0 -8
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +0 -30
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +2 -48
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/channel_connection_spec.rb +2 -1
- data/src/ruby/spec/client_auth_spec.rb +1 -1
- data/src/ruby/spec/client_server_spec.rb +2 -2
- data/src/ruby/spec/generic/active_call_spec.rb +1 -1
- data/src/ruby/spec/generic/client_stub_spec.rb +4 -4
- data/src/ruby/spec/generic/interceptor_registry_spec.rb +1 -1
- data/src/ruby/spec/generic/rpc_server_spec.rb +12 -12
- data/src/ruby/spec/google_rpc_status_utils_spec.rb +3 -2
- data/src/ruby/spec/pb/health/checker_spec.rb +1 -1
- data/src/ruby/spec/server_spec.rb +9 -9
- data/src/ruby/spec/support/helpers.rb +35 -1
- metadata +68 -66
- data/include/grpc/impl/codegen/exec_ctx_fwd.h +0 -26
- data/include/grpc/support/histogram.h +0 -64
- data/src/core/lib/support/histogram.cc +0 -227
@@ -31,11 +31,11 @@ extern "C" {
|
|
31
31
|
#include <openssl/pem.h>
|
32
32
|
}
|
33
33
|
|
34
|
+
#include "src/core/lib/gpr/string.h"
|
34
35
|
#include "src/core/lib/http/httpcli.h"
|
35
36
|
#include "src/core/lib/iomgr/polling_entity.h"
|
36
37
|
#include "src/core/lib/slice/b64.h"
|
37
38
|
#include "src/core/lib/slice/slice_internal.h"
|
38
|
-
#include "src/core/lib/support/string.h"
|
39
39
|
#include "src/core/tsi/ssl_types.h"
|
40
40
|
|
41
41
|
/* --- Utils. --- */
|
@@ -74,12 +74,11 @@ static const EVP_MD* evp_md_from_alg(const char* alg) {
|
|
74
74
|
}
|
75
75
|
}
|
76
76
|
|
77
|
-
static grpc_json* parse_json_part_from_jwt(
|
78
|
-
const char* str, size_t len,
|
77
|
+
static grpc_json* parse_json_part_from_jwt(const char* str, size_t len,
|
79
78
|
grpc_slice* buffer) {
|
80
79
|
grpc_json* json;
|
81
80
|
|
82
|
-
*buffer = grpc_base64_decode_with_len(
|
81
|
+
*buffer = grpc_base64_decode_with_len(str, len, 1);
|
83
82
|
if (GRPC_SLICE_IS_EMPTY(*buffer)) {
|
84
83
|
gpr_log(GPR_ERROR, "Invalid base64.");
|
85
84
|
return nullptr;
|
@@ -87,7 +86,7 @@ static grpc_json* parse_json_part_from_jwt(grpc_exec_ctx* exec_ctx,
|
|
87
86
|
json = grpc_json_parse_string_with_len((char*)GRPC_SLICE_START_PTR(*buffer),
|
88
87
|
GRPC_SLICE_LENGTH(*buffer));
|
89
88
|
if (json == nullptr) {
|
90
|
-
grpc_slice_unref_internal(
|
89
|
+
grpc_slice_unref_internal(*buffer);
|
91
90
|
gpr_log(GPR_ERROR, "JSON parsing error.");
|
92
91
|
}
|
93
92
|
return json;
|
@@ -123,14 +122,13 @@ typedef struct {
|
|
123
122
|
grpc_slice buffer;
|
124
123
|
} jose_header;
|
125
124
|
|
126
|
-
static void jose_header_destroy(
|
127
|
-
grpc_slice_unref_internal(
|
125
|
+
static void jose_header_destroy(jose_header* h) {
|
126
|
+
grpc_slice_unref_internal(h->buffer);
|
128
127
|
gpr_free(h);
|
129
128
|
}
|
130
129
|
|
131
130
|
/* Takes ownership of json and buffer. */
|
132
|
-
static jose_header* jose_header_from_json(
|
133
|
-
grpc_json* json, grpc_slice buffer) {
|
131
|
+
static jose_header* jose_header_from_json(grpc_json* json, grpc_slice buffer) {
|
134
132
|
grpc_json* cur;
|
135
133
|
jose_header* h = (jose_header*)gpr_zalloc(sizeof(jose_header));
|
136
134
|
h->buffer = buffer;
|
@@ -164,7 +162,7 @@ static jose_header* jose_header_from_json(grpc_exec_ctx* exec_ctx,
|
|
164
162
|
|
165
163
|
error:
|
166
164
|
grpc_json_destroy(json);
|
167
|
-
jose_header_destroy(
|
165
|
+
jose_header_destroy(h);
|
168
166
|
return nullptr;
|
169
167
|
}
|
170
168
|
|
@@ -184,9 +182,9 @@ struct grpc_jwt_claims {
|
|
184
182
|
grpc_slice buffer;
|
185
183
|
};
|
186
184
|
|
187
|
-
void grpc_jwt_claims_destroy(
|
185
|
+
void grpc_jwt_claims_destroy(grpc_jwt_claims* claims) {
|
188
186
|
grpc_json_destroy(claims->json);
|
189
|
-
grpc_slice_unref_internal(
|
187
|
+
grpc_slice_unref_internal(claims->buffer);
|
190
188
|
gpr_free(claims);
|
191
189
|
}
|
192
190
|
|
@@ -231,8 +229,7 @@ gpr_timespec grpc_jwt_claims_not_before(const grpc_jwt_claims* claims) {
|
|
231
229
|
}
|
232
230
|
|
233
231
|
/* Takes ownership of json and buffer even in case of failure. */
|
234
|
-
grpc_jwt_claims* grpc_jwt_claims_from_json(
|
235
|
-
grpc_json* json, grpc_slice buffer) {
|
232
|
+
grpc_jwt_claims* grpc_jwt_claims_from_json(grpc_json* json, grpc_slice buffer) {
|
236
233
|
grpc_json* cur;
|
237
234
|
grpc_jwt_claims* claims =
|
238
235
|
(grpc_jwt_claims*)gpr_malloc(sizeof(grpc_jwt_claims));
|
@@ -274,7 +271,7 @@ grpc_jwt_claims* grpc_jwt_claims_from_json(grpc_exec_ctx* exec_ctx,
|
|
274
271
|
return claims;
|
275
272
|
|
276
273
|
error:
|
277
|
-
grpc_jwt_claims_destroy(
|
274
|
+
grpc_jwt_claims_destroy(claims);
|
278
275
|
return nullptr;
|
279
276
|
}
|
280
277
|
|
@@ -350,7 +347,7 @@ static verifier_cb_ctx* verifier_cb_ctx_create(
|
|
350
347
|
grpc_jwt_claims* claims, const char* audience, grpc_slice signature,
|
351
348
|
const char* signed_jwt, size_t signed_jwt_len, void* user_data,
|
352
349
|
grpc_jwt_verification_done_cb cb) {
|
353
|
-
|
350
|
+
grpc_core::ExecCtx exec_ctx;
|
354
351
|
verifier_cb_ctx* ctx = (verifier_cb_ctx*)gpr_zalloc(sizeof(verifier_cb_ctx));
|
355
352
|
ctx->verifier = verifier;
|
356
353
|
ctx->pollent = grpc_polling_entity_create_from_pollset(pollset);
|
@@ -361,16 +358,16 @@ static verifier_cb_ctx* verifier_cb_ctx_create(
|
|
361
358
|
ctx->signed_data = grpc_slice_from_copied_buffer(signed_jwt, signed_jwt_len);
|
362
359
|
ctx->user_data = user_data;
|
363
360
|
ctx->user_cb = cb;
|
364
|
-
|
361
|
+
|
365
362
|
return ctx;
|
366
363
|
}
|
367
364
|
|
368
|
-
void verifier_cb_ctx_destroy(
|
365
|
+
void verifier_cb_ctx_destroy(verifier_cb_ctx* ctx) {
|
369
366
|
if (ctx->audience != nullptr) gpr_free(ctx->audience);
|
370
|
-
if (ctx->claims != nullptr) grpc_jwt_claims_destroy(
|
371
|
-
grpc_slice_unref_internal(
|
372
|
-
grpc_slice_unref_internal(
|
373
|
-
jose_header_destroy(
|
367
|
+
if (ctx->claims != nullptr) grpc_jwt_claims_destroy(ctx->claims);
|
368
|
+
grpc_slice_unref_internal(ctx->signature);
|
369
|
+
grpc_slice_unref_internal(ctx->signed_data);
|
370
|
+
jose_header_destroy(ctx->header);
|
374
371
|
for (size_t i = 0; i < HTTP_RESPONSE_COUNT; i++) {
|
375
372
|
grpc_http_response_destroy(&ctx->responses[i]);
|
376
373
|
}
|
@@ -450,19 +447,19 @@ end:
|
|
450
447
|
return result;
|
451
448
|
}
|
452
449
|
|
453
|
-
static BIGNUM* bignum_from_base64(
|
450
|
+
static BIGNUM* bignum_from_base64(const char* b64) {
|
454
451
|
BIGNUM* result = nullptr;
|
455
452
|
grpc_slice bin;
|
456
453
|
|
457
454
|
if (b64 == nullptr) return nullptr;
|
458
|
-
bin = grpc_base64_decode(
|
455
|
+
bin = grpc_base64_decode(b64, 1);
|
459
456
|
if (GRPC_SLICE_IS_EMPTY(bin)) {
|
460
457
|
gpr_log(GPR_ERROR, "Invalid base64 for big num.");
|
461
458
|
return nullptr;
|
462
459
|
}
|
463
460
|
result = BN_bin2bn(GRPC_SLICE_START_PTR(bin),
|
464
461
|
TSI_SIZE_AS_SIZE(GRPC_SLICE_LENGTH(bin)), nullptr);
|
465
|
-
grpc_slice_unref_internal(
|
462
|
+
grpc_slice_unref_internal(bin);
|
466
463
|
return result;
|
467
464
|
}
|
468
465
|
|
@@ -495,8 +492,7 @@ static int RSA_set0_key(RSA* r, BIGNUM* n, BIGNUM* e, BIGNUM* d) {
|
|
495
492
|
}
|
496
493
|
#endif // OPENSSL_VERSION_NUMBER < 0x10100000L
|
497
494
|
|
498
|
-
static EVP_PKEY* pkey_from_jwk(
|
499
|
-
const char* kty) {
|
495
|
+
static EVP_PKEY* pkey_from_jwk(const grpc_json* json, const char* kty) {
|
500
496
|
const grpc_json* key_prop;
|
501
497
|
RSA* rsa = nullptr;
|
502
498
|
EVP_PKEY* result = nullptr;
|
@@ -515,12 +511,10 @@ static EVP_PKEY* pkey_from_jwk(grpc_exec_ctx* exec_ctx, const grpc_json* json,
|
|
515
511
|
}
|
516
512
|
for (key_prop = json->child; key_prop != nullptr; key_prop = key_prop->next) {
|
517
513
|
if (strcmp(key_prop->key, "n") == 0) {
|
518
|
-
tmp_n =
|
519
|
-
bignum_from_base64(exec_ctx, validate_string_field(key_prop, "n"));
|
514
|
+
tmp_n = bignum_from_base64(validate_string_field(key_prop, "n"));
|
520
515
|
if (tmp_n == nullptr) goto end;
|
521
516
|
} else if (strcmp(key_prop->key, "e") == 0) {
|
522
|
-
tmp_e =
|
523
|
-
bignum_from_base64(exec_ctx, validate_string_field(key_prop, "e"));
|
517
|
+
tmp_e = bignum_from_base64(validate_string_field(key_prop, "e"));
|
524
518
|
if (tmp_e == nullptr) goto end;
|
525
519
|
}
|
526
520
|
}
|
@@ -545,8 +539,7 @@ end:
|
|
545
539
|
return result;
|
546
540
|
}
|
547
541
|
|
548
|
-
static EVP_PKEY* find_verification_key(
|
549
|
-
const grpc_json* json,
|
542
|
+
static EVP_PKEY* find_verification_key(const grpc_json* json,
|
550
543
|
const char* header_alg,
|
551
544
|
const char* header_kid) {
|
552
545
|
const grpc_json* jkey;
|
@@ -591,7 +584,7 @@ static EVP_PKEY* find_verification_key(grpc_exec_ctx* exec_ctx,
|
|
591
584
|
}
|
592
585
|
if (alg != nullptr && kid != nullptr && kty != nullptr &&
|
593
586
|
strcmp(kid, header_kid) == 0 && strcmp(alg, header_alg) == 0) {
|
594
|
-
return pkey_from_jwk(
|
587
|
+
return pkey_from_jwk(jkey, kty);
|
595
588
|
}
|
596
589
|
}
|
597
590
|
gpr_log(GPR_ERROR,
|
@@ -632,8 +625,7 @@ end:
|
|
632
625
|
return result;
|
633
626
|
}
|
634
627
|
|
635
|
-
static void on_keys_retrieved(
|
636
|
-
grpc_error* error) {
|
628
|
+
static void on_keys_retrieved(void* user_data, grpc_error* error) {
|
637
629
|
verifier_cb_ctx* ctx = (verifier_cb_ctx*)user_data;
|
638
630
|
grpc_json* json = json_from_http(&ctx->responses[HTTP_RESPONSE_KEYS]);
|
639
631
|
EVP_PKEY* verification_key = nullptr;
|
@@ -645,7 +637,7 @@ static void on_keys_retrieved(grpc_exec_ctx* exec_ctx, void* user_data,
|
|
645
637
|
goto end;
|
646
638
|
}
|
647
639
|
verification_key =
|
648
|
-
find_verification_key(
|
640
|
+
find_verification_key(json, ctx->header->alg, ctx->header->kid);
|
649
641
|
if (verification_key == nullptr) {
|
650
642
|
gpr_log(GPR_ERROR, "Could not find verification key with kid %s.",
|
651
643
|
ctx->header->kid);
|
@@ -669,12 +661,11 @@ static void on_keys_retrieved(grpc_exec_ctx* exec_ctx, void* user_data,
|
|
669
661
|
end:
|
670
662
|
if (json != nullptr) grpc_json_destroy(json);
|
671
663
|
EVP_PKEY_free(verification_key);
|
672
|
-
ctx->user_cb(
|
673
|
-
verifier_cb_ctx_destroy(
|
664
|
+
ctx->user_cb(ctx->user_data, status, claims);
|
665
|
+
verifier_cb_ctx_destroy(ctx);
|
674
666
|
}
|
675
667
|
|
676
|
-
static void on_openid_config_retrieved(
|
677
|
-
grpc_error* error) {
|
668
|
+
static void on_openid_config_retrieved(void* user_data, grpc_error* error) {
|
678
669
|
const grpc_json* cur;
|
679
670
|
verifier_cb_ctx* ctx = (verifier_cb_ctx*)user_data;
|
680
671
|
const grpc_http_response* response = &ctx->responses[HTTP_RESPONSE_OPENID];
|
@@ -711,20 +702,19 @@ static void on_openid_config_retrieved(grpc_exec_ctx* exec_ctx, void* user_data,
|
|
711
702
|
extreme memory pressure. */
|
712
703
|
resource_quota = grpc_resource_quota_create("jwt_verifier");
|
713
704
|
grpc_httpcli_get(
|
714
|
-
|
715
|
-
|
705
|
+
&ctx->verifier->http_ctx, &ctx->pollent, resource_quota, &req,
|
706
|
+
grpc_core::ExecCtx::Get()->Now() + grpc_jwt_verifier_max_delay,
|
716
707
|
GRPC_CLOSURE_CREATE(on_keys_retrieved, ctx, grpc_schedule_on_exec_ctx),
|
717
708
|
&ctx->responses[HTTP_RESPONSE_KEYS]);
|
718
|
-
grpc_resource_quota_unref_internal(
|
709
|
+
grpc_resource_quota_unref_internal(resource_quota);
|
719
710
|
grpc_json_destroy(json);
|
720
711
|
gpr_free(req.host);
|
721
712
|
return;
|
722
713
|
|
723
714
|
error:
|
724
715
|
if (json != nullptr) grpc_json_destroy(json);
|
725
|
-
ctx->user_cb(
|
726
|
-
|
727
|
-
verifier_cb_ctx_destroy(exec_ctx, ctx);
|
716
|
+
ctx->user_cb(ctx->user_data, GRPC_JWT_VERIFIER_KEY_RETRIEVAL_ERROR, nullptr);
|
717
|
+
verifier_cb_ctx_destroy(ctx);
|
728
718
|
}
|
729
719
|
|
730
720
|
static email_key_mapping* verifier_get_mapping(grpc_jwt_verifier* v,
|
@@ -772,8 +762,7 @@ const char* grpc_jwt_issuer_email_domain(const char* issuer) {
|
|
772
762
|
}
|
773
763
|
|
774
764
|
/* Takes ownership of ctx. */
|
775
|
-
static void retrieve_key_and_verify(
|
776
|
-
verifier_cb_ctx* ctx) {
|
765
|
+
static void retrieve_key_and_verify(verifier_cb_ctx* ctx) {
|
777
766
|
const char* email_domain;
|
778
767
|
grpc_closure* http_cb;
|
779
768
|
char* path_prefix = nullptr;
|
@@ -840,23 +829,21 @@ static void retrieve_key_and_verify(grpc_exec_ctx* exec_ctx,
|
|
840
829
|
channel. This would allow us to cancel an authentication query when under
|
841
830
|
extreme memory pressure. */
|
842
831
|
resource_quota = grpc_resource_quota_create("jwt_verifier");
|
843
|
-
grpc_httpcli_get(
|
844
|
-
|
845
|
-
|
846
|
-
|
847
|
-
grpc_resource_quota_unref_internal(
|
832
|
+
grpc_httpcli_get(
|
833
|
+
&ctx->verifier->http_ctx, &ctx->pollent, resource_quota, &req,
|
834
|
+
grpc_core::ExecCtx::Get()->Now() + grpc_jwt_verifier_max_delay, http_cb,
|
835
|
+
&ctx->responses[rsp_idx]);
|
836
|
+
grpc_resource_quota_unref_internal(resource_quota);
|
848
837
|
gpr_free(req.host);
|
849
838
|
gpr_free(req.http.path);
|
850
839
|
return;
|
851
840
|
|
852
841
|
error:
|
853
|
-
ctx->user_cb(
|
854
|
-
|
855
|
-
verifier_cb_ctx_destroy(exec_ctx, ctx);
|
842
|
+
ctx->user_cb(ctx->user_data, GRPC_JWT_VERIFIER_KEY_RETRIEVAL_ERROR, nullptr);
|
843
|
+
verifier_cb_ctx_destroy(ctx);
|
856
844
|
}
|
857
845
|
|
858
|
-
void grpc_jwt_verifier_verify(
|
859
|
-
grpc_jwt_verifier* verifier,
|
846
|
+
void grpc_jwt_verifier_verify(grpc_jwt_verifier* verifier,
|
860
847
|
grpc_pollset* pollset, const char* jwt,
|
861
848
|
const char* audience,
|
862
849
|
grpc_jwt_verification_done_cb cb,
|
@@ -875,35 +862,32 @@ void grpc_jwt_verifier_verify(grpc_exec_ctx* exec_ctx,
|
|
875
862
|
cb != nullptr);
|
876
863
|
dot = strchr(cur, '.');
|
877
864
|
if (dot == nullptr) goto error;
|
878
|
-
json = parse_json_part_from_jwt(
|
879
|
-
&header_buffer);
|
865
|
+
json = parse_json_part_from_jwt(cur, (size_t)(dot - cur), &header_buffer);
|
880
866
|
if (json == nullptr) goto error;
|
881
|
-
header = jose_header_from_json(
|
867
|
+
header = jose_header_from_json(json, header_buffer);
|
882
868
|
if (header == nullptr) goto error;
|
883
869
|
|
884
870
|
cur = dot + 1;
|
885
871
|
dot = strchr(cur, '.');
|
886
872
|
if (dot == nullptr) goto error;
|
887
|
-
json = parse_json_part_from_jwt(
|
888
|
-
&claims_buffer);
|
873
|
+
json = parse_json_part_from_jwt(cur, (size_t)(dot - cur), &claims_buffer);
|
889
874
|
if (json == nullptr) goto error;
|
890
|
-
claims = grpc_jwt_claims_from_json(
|
875
|
+
claims = grpc_jwt_claims_from_json(json, claims_buffer);
|
891
876
|
if (claims == nullptr) goto error;
|
892
877
|
|
893
878
|
signed_jwt_len = (size_t)(dot - jwt);
|
894
879
|
cur = dot + 1;
|
895
|
-
signature = grpc_base64_decode(
|
880
|
+
signature = grpc_base64_decode(cur, 1);
|
896
881
|
if (GRPC_SLICE_IS_EMPTY(signature)) goto error;
|
897
882
|
retrieve_key_and_verify(
|
898
|
-
exec_ctx,
|
899
883
|
verifier_cb_ctx_create(verifier, pollset, header, claims, audience,
|
900
884
|
signature, jwt, signed_jwt_len, user_data, cb));
|
901
885
|
return;
|
902
886
|
|
903
887
|
error:
|
904
|
-
if (header != nullptr) jose_header_destroy(
|
905
|
-
if (claims != nullptr) grpc_jwt_claims_destroy(
|
906
|
-
cb(
|
888
|
+
if (header != nullptr) jose_header_destroy(header);
|
889
|
+
if (claims != nullptr) grpc_jwt_claims_destroy(claims);
|
890
|
+
cb(user_data, GRPC_JWT_VERIFIER_BAD_FORMAT, nullptr);
|
907
891
|
}
|
908
892
|
|
909
893
|
grpc_jwt_verifier* grpc_jwt_verifier_create(
|
@@ -930,10 +914,10 @@ grpc_jwt_verifier* grpc_jwt_verifier_create(
|
|
930
914
|
return v;
|
931
915
|
}
|
932
916
|
|
933
|
-
void grpc_jwt_verifier_destroy(
|
917
|
+
void grpc_jwt_verifier_destroy(grpc_jwt_verifier* v) {
|
934
918
|
size_t i;
|
935
919
|
if (v == nullptr) return;
|
936
|
-
grpc_httpcli_context_destroy(
|
920
|
+
grpc_httpcli_context_destroy(&v->http_ctx);
|
937
921
|
if (v->mappings != nullptr) {
|
938
922
|
for (i = 0; i < v->num_mappings; i++) {
|
939
923
|
gpr_free(v->mappings[i].email_domain);
|
@@ -32,10 +32,6 @@
|
|
32
32
|
#define GRPC_GOOGLE_SERVICE_ACCOUNTS_KEY_URL_PREFIX \
|
33
33
|
"www.googleapis.com/robot/v1/metadata/x509"
|
34
34
|
|
35
|
-
#ifdef __cplusplus
|
36
|
-
extern "C" {
|
37
|
-
#endif
|
38
|
-
|
39
35
|
/* --- grpc_jwt_verifier_status. --- */
|
40
36
|
|
41
37
|
typedef enum {
|
@@ -55,7 +51,7 @@ const char* grpc_jwt_verifier_status_to_string(grpc_jwt_verifier_status status);
|
|
55
51
|
|
56
52
|
typedef struct grpc_jwt_claims grpc_jwt_claims;
|
57
53
|
|
58
|
-
void grpc_jwt_claims_destroy(
|
54
|
+
void grpc_jwt_claims_destroy(grpc_jwt_claims* claims);
|
59
55
|
|
60
56
|
/* Returns the whole JSON tree of the claims. */
|
61
57
|
const grpc_json* grpc_jwt_claims_json(const grpc_jwt_claims* claims);
|
@@ -98,21 +94,18 @@ grpc_jwt_verifier* grpc_jwt_verifier_create(
|
|
98
94
|
size_t num_mappings);
|
99
95
|
|
100
96
|
/*The verifier must not be destroyed if there are still outstanding callbacks.*/
|
101
|
-
void grpc_jwt_verifier_destroy(
|
102
|
-
grpc_jwt_verifier* verifier);
|
97
|
+
void grpc_jwt_verifier_destroy(grpc_jwt_verifier* verifier);
|
103
98
|
|
104
99
|
/* User provided callback that will be called when the verification of the JWT
|
105
100
|
is done (maybe in another thread).
|
106
101
|
It is the responsibility of the callee to call grpc_jwt_claims_destroy on
|
107
102
|
the claims. */
|
108
|
-
typedef void (*grpc_jwt_verification_done_cb)(
|
109
|
-
void* user_data,
|
103
|
+
typedef void (*grpc_jwt_verification_done_cb)(void* user_data,
|
110
104
|
grpc_jwt_verifier_status status,
|
111
105
|
grpc_jwt_claims* claims);
|
112
106
|
|
113
107
|
/* Verifies for the JWT for the given expected audience. */
|
114
|
-
void grpc_jwt_verifier_verify(
|
115
|
-
grpc_jwt_verifier* verifier,
|
108
|
+
void grpc_jwt_verifier_verify(grpc_jwt_verifier* verifier,
|
116
109
|
grpc_pollset* pollset, const char* jwt,
|
117
110
|
const char* audience,
|
118
111
|
grpc_jwt_verification_done_cb cb,
|
@@ -120,14 +113,9 @@ void grpc_jwt_verifier_verify(grpc_exec_ctx* exec_ctx,
|
|
120
113
|
|
121
114
|
/* --- TESTING ONLY exposed functions. --- */
|
122
115
|
|
123
|
-
grpc_jwt_claims* grpc_jwt_claims_from_json(
|
124
|
-
grpc_json* json, grpc_slice buffer);
|
116
|
+
grpc_jwt_claims* grpc_jwt_claims_from_json(grpc_json* json, grpc_slice buffer);
|
125
117
|
grpc_jwt_verifier_status grpc_jwt_claims_check(const grpc_jwt_claims* claims,
|
126
118
|
const char* audience);
|
127
119
|
const char* grpc_jwt_issuer_email_domain(const char* issuer);
|
128
120
|
|
129
|
-
#ifdef __cplusplus
|
130
|
-
}
|
131
|
-
#endif
|
132
|
-
|
133
121
|
#endif /* GRPC_CORE_LIB_SECURITY_CREDENTIALS_JWT_JWT_VERIFIER_H */
|
@@ -103,21 +103,19 @@ void grpc_auth_refresh_token_destruct(grpc_auth_refresh_token* refresh_token) {
|
|
103
103
|
// Oauth2 Token Fetcher credentials.
|
104
104
|
//
|
105
105
|
|
106
|
-
static void oauth2_token_fetcher_destruct(
|
107
|
-
grpc_call_credentials* creds) {
|
106
|
+
static void oauth2_token_fetcher_destruct(grpc_call_credentials* creds) {
|
108
107
|
grpc_oauth2_token_fetcher_credentials* c =
|
109
108
|
(grpc_oauth2_token_fetcher_credentials*)creds;
|
110
|
-
GRPC_MDELEM_UNREF(
|
109
|
+
GRPC_MDELEM_UNREF(c->access_token_md);
|
111
110
|
gpr_mu_destroy(&c->mu);
|
112
|
-
grpc_pollset_set_destroy(
|
113
|
-
|
114
|
-
grpc_httpcli_context_destroy(exec_ctx, &c->httpcli_context);
|
111
|
+
grpc_pollset_set_destroy(grpc_polling_entity_pollset_set(&c->pollent));
|
112
|
+
grpc_httpcli_context_destroy(&c->httpcli_context);
|
115
113
|
}
|
116
114
|
|
117
115
|
grpc_credentials_status
|
118
116
|
grpc_oauth2_token_fetcher_credentials_parse_server_response(
|
119
|
-
|
120
|
-
|
117
|
+
const grpc_http_response* response, grpc_mdelem* token_md,
|
118
|
+
grpc_millis* token_lifetime) {
|
121
119
|
char* null_terminated_body = nullptr;
|
122
120
|
char* new_access_token = nullptr;
|
123
121
|
grpc_credentials_status status = GRPC_CREDENTIALS_OK;
|
@@ -184,9 +182,8 @@ grpc_oauth2_token_fetcher_credentials_parse_server_response(
|
|
184
182
|
gpr_asprintf(&new_access_token, "%s %s", token_type->value,
|
185
183
|
access_token->value);
|
186
184
|
*token_lifetime = strtol(expires_in->value, nullptr, 10) * GPR_MS_PER_SEC;
|
187
|
-
if (!GRPC_MDISNULL(*token_md)) GRPC_MDELEM_UNREF(
|
185
|
+
if (!GRPC_MDISNULL(*token_md)) GRPC_MDELEM_UNREF(*token_md);
|
188
186
|
*token_md = grpc_mdelem_from_slices(
|
189
|
-
exec_ctx,
|
190
187
|
grpc_slice_from_static_string(GRPC_AUTHORIZATION_METADATA_KEY),
|
191
188
|
grpc_slice_from_copied_string(new_access_token));
|
192
189
|
status = GRPC_CREDENTIALS_OK;
|
@@ -194,7 +191,7 @@ grpc_oauth2_token_fetcher_credentials_parse_server_response(
|
|
194
191
|
|
195
192
|
end:
|
196
193
|
if (status != GRPC_CREDENTIALS_OK && !GRPC_MDISNULL(*token_md)) {
|
197
|
-
GRPC_MDELEM_UNREF(
|
194
|
+
GRPC_MDELEM_UNREF(*token_md);
|
198
195
|
*token_md = GRPC_MDNULL;
|
199
196
|
}
|
200
197
|
if (null_terminated_body != nullptr) gpr_free(null_terminated_body);
|
@@ -203,8 +200,7 @@ end:
|
|
203
200
|
return status;
|
204
201
|
}
|
205
202
|
|
206
|
-
static void on_oauth2_token_fetcher_http_response(
|
207
|
-
void* user_data,
|
203
|
+
static void on_oauth2_token_fetcher_http_response(void* user_data,
|
208
204
|
grpc_error* error) {
|
209
205
|
GRPC_LOG_IF_ERROR("oauth_fetch", GRPC_ERROR_REF(error));
|
210
206
|
grpc_credentials_metadata_request* r =
|
@@ -215,13 +211,13 @@ static void on_oauth2_token_fetcher_http_response(grpc_exec_ctx* exec_ctx,
|
|
215
211
|
grpc_millis token_lifetime;
|
216
212
|
grpc_credentials_status status =
|
217
213
|
grpc_oauth2_token_fetcher_credentials_parse_server_response(
|
218
|
-
|
214
|
+
&r->response, &access_token_md, &token_lifetime);
|
219
215
|
// Update cache and grab list of pending requests.
|
220
216
|
gpr_mu_lock(&c->mu);
|
221
217
|
c->token_fetch_pending = false;
|
222
218
|
c->access_token_md = GRPC_MDELEM_REF(access_token_md);
|
223
219
|
c->token_expiration = status == GRPC_CREDENTIALS_OK
|
224
|
-
?
|
220
|
+
? grpc_core::ExecCtx::Get()->Now() + token_lifetime
|
225
221
|
: 0;
|
226
222
|
grpc_oauth2_pending_get_request_metadata* pending_request =
|
227
223
|
c->pending_requests;
|
@@ -236,24 +232,22 @@ static void on_oauth2_token_fetcher_http_response(grpc_exec_ctx* exec_ctx,
|
|
236
232
|
error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
237
233
|
"Error occured when fetching oauth2 token.", &error, 1);
|
238
234
|
}
|
239
|
-
GRPC_CLOSURE_SCHED(
|
235
|
+
GRPC_CLOSURE_SCHED(pending_request->on_request_metadata, error);
|
240
236
|
grpc_polling_entity_del_from_pollset_set(
|
241
|
-
|
242
|
-
grpc_polling_entity_pollset_set(&c->pollent));
|
237
|
+
pending_request->pollent, grpc_polling_entity_pollset_set(&c->pollent));
|
243
238
|
grpc_oauth2_pending_get_request_metadata* prev = pending_request;
|
244
239
|
pending_request = pending_request->next;
|
245
240
|
gpr_free(prev);
|
246
241
|
}
|
247
|
-
GRPC_MDELEM_UNREF(
|
248
|
-
grpc_call_credentials_unref(
|
249
|
-
grpc_credentials_metadata_request_destroy(
|
242
|
+
GRPC_MDELEM_UNREF(access_token_md);
|
243
|
+
grpc_call_credentials_unref(r->creds);
|
244
|
+
grpc_credentials_metadata_request_destroy(r);
|
250
245
|
}
|
251
246
|
|
252
247
|
static bool oauth2_token_fetcher_get_request_metadata(
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
grpc_error** error) {
|
248
|
+
grpc_call_credentials* creds, grpc_polling_entity* pollent,
|
249
|
+
grpc_auth_metadata_context context, grpc_credentials_mdelem_array* md_array,
|
250
|
+
grpc_closure* on_request_metadata, grpc_error** error) {
|
257
251
|
grpc_oauth2_token_fetcher_credentials* c =
|
258
252
|
(grpc_oauth2_token_fetcher_credentials*)creds;
|
259
253
|
// Check if we can use the cached token.
|
@@ -262,13 +256,14 @@ static bool oauth2_token_fetcher_get_request_metadata(
|
|
262
256
|
grpc_mdelem cached_access_token_md = GRPC_MDNULL;
|
263
257
|
gpr_mu_lock(&c->mu);
|
264
258
|
if (!GRPC_MDISNULL(c->access_token_md) &&
|
265
|
-
(c->token_expiration -
|
259
|
+
(c->token_expiration - grpc_core::ExecCtx::Get()->Now() >
|
260
|
+
refresh_threshold)) {
|
266
261
|
cached_access_token_md = GRPC_MDELEM_REF(c->access_token_md);
|
267
262
|
}
|
268
263
|
if (!GRPC_MDISNULL(cached_access_token_md)) {
|
269
264
|
gpr_mu_unlock(&c->mu);
|
270
265
|
grpc_credentials_mdelem_array_add(md_array, cached_access_token_md);
|
271
|
-
GRPC_MDELEM_UNREF(
|
266
|
+
GRPC_MDELEM_UNREF(cached_access_token_md);
|
272
267
|
return true;
|
273
268
|
}
|
274
269
|
// Couldn't get the token from the cache.
|
@@ -280,7 +275,7 @@ static bool oauth2_token_fetcher_get_request_metadata(
|
|
280
275
|
pending_request->on_request_metadata = on_request_metadata;
|
281
276
|
pending_request->pollent = pollent;
|
282
277
|
grpc_polling_entity_add_to_pollset_set(
|
283
|
-
|
278
|
+
pollent, grpc_polling_entity_pollset_set(&c->pollent));
|
284
279
|
pending_request->next = c->pending_requests;
|
285
280
|
c->pending_requests = pending_request;
|
286
281
|
bool start_fetch = false;
|
@@ -291,17 +286,17 @@ static bool oauth2_token_fetcher_get_request_metadata(
|
|
291
286
|
gpr_mu_unlock(&c->mu);
|
292
287
|
if (start_fetch) {
|
293
288
|
grpc_call_credentials_ref(creds);
|
294
|
-
c->fetch_func(
|
289
|
+
c->fetch_func(grpc_credentials_metadata_request_create(creds),
|
295
290
|
&c->httpcli_context, &c->pollent,
|
296
291
|
on_oauth2_token_fetcher_http_response,
|
297
|
-
|
292
|
+
grpc_core::ExecCtx::Get()->Now() + refresh_threshold);
|
298
293
|
}
|
299
294
|
return false;
|
300
295
|
}
|
301
296
|
|
302
297
|
static void oauth2_token_fetcher_cancel_get_request_metadata(
|
303
|
-
|
304
|
-
|
298
|
+
grpc_call_credentials* creds, grpc_credentials_mdelem_array* md_array,
|
299
|
+
grpc_error* error) {
|
305
300
|
grpc_oauth2_token_fetcher_credentials* c =
|
306
301
|
(grpc_oauth2_token_fetcher_credentials*)creds;
|
307
302
|
gpr_mu_lock(&c->mu);
|
@@ -317,7 +312,7 @@ static void oauth2_token_fetcher_cancel_get_request_metadata(
|
|
317
312
|
c->pending_requests = pending_request->next;
|
318
313
|
}
|
319
314
|
// Invoke the callback immediately with an error.
|
320
|
-
GRPC_CLOSURE_SCHED(
|
315
|
+
GRPC_CLOSURE_SCHED(pending_request->on_request_metadata,
|
321
316
|
GRPC_ERROR_REF(error));
|
322
317
|
gpr_free(pending_request);
|
323
318
|
break;
|
@@ -351,7 +346,7 @@ static grpc_call_credentials_vtable compute_engine_vtable = {
|
|
351
346
|
oauth2_token_fetcher_cancel_get_request_metadata};
|
352
347
|
|
353
348
|
static void compute_engine_fetch_oauth2(
|
354
|
-
|
349
|
+
grpc_credentials_metadata_request* metadata_req,
|
355
350
|
grpc_httpcli_context* httpcli_context, grpc_polling_entity* pollent,
|
356
351
|
grpc_iomgr_cb_func response_cb, grpc_millis deadline) {
|
357
352
|
grpc_http_header header = {(char*)"Metadata-Flavor", (char*)"Google"};
|
@@ -367,10 +362,10 @@ static void compute_engine_fetch_oauth2(
|
|
367
362
|
grpc_resource_quota* resource_quota =
|
368
363
|
grpc_resource_quota_create("oauth2_credentials");
|
369
364
|
grpc_httpcli_get(
|
370
|
-
|
365
|
+
httpcli_context, pollent, resource_quota, &request, deadline,
|
371
366
|
GRPC_CLOSURE_CREATE(response_cb, metadata_req, grpc_schedule_on_exec_ctx),
|
372
367
|
&metadata_req->response);
|
373
|
-
grpc_resource_quota_unref_internal(
|
368
|
+
grpc_resource_quota_unref_internal(resource_quota);
|
374
369
|
}
|
375
370
|
|
376
371
|
grpc_call_credentials* grpc_google_compute_engine_credentials_create(
|
@@ -390,12 +385,11 @@ grpc_call_credentials* grpc_google_compute_engine_credentials_create(
|
|
390
385
|
// Google Refresh Token credentials.
|
391
386
|
//
|
392
387
|
|
393
|
-
static void refresh_token_destruct(
|
394
|
-
grpc_call_credentials* creds) {
|
388
|
+
static void refresh_token_destruct(grpc_call_credentials* creds) {
|
395
389
|
grpc_google_refresh_token_credentials* c =
|
396
390
|
(grpc_google_refresh_token_credentials*)creds;
|
397
391
|
grpc_auth_refresh_token_destruct(&c->refresh_token);
|
398
|
-
oauth2_token_fetcher_destruct(
|
392
|
+
oauth2_token_fetcher_destruct(&c->base.base);
|
399
393
|
}
|
400
394
|
|
401
395
|
static grpc_call_credentials_vtable refresh_token_vtable = {
|
@@ -403,7 +397,7 @@ static grpc_call_credentials_vtable refresh_token_vtable = {
|
|
403
397
|
oauth2_token_fetcher_cancel_get_request_metadata};
|
404
398
|
|
405
399
|
static void refresh_token_fetch_oauth2(
|
406
|
-
|
400
|
+
grpc_credentials_metadata_request* metadata_req,
|
407
401
|
grpc_httpcli_context* httpcli_context, grpc_polling_entity* pollent,
|
408
402
|
grpc_iomgr_cb_func response_cb, grpc_millis deadline) {
|
409
403
|
grpc_google_refresh_token_credentials* c =
|
@@ -427,11 +421,11 @@ static void refresh_token_fetch_oauth2(
|
|
427
421
|
grpc_resource_quota* resource_quota =
|
428
422
|
grpc_resource_quota_create("oauth2_credentials_refresh");
|
429
423
|
grpc_httpcli_post(
|
430
|
-
|
431
|
-
|
424
|
+
httpcli_context, pollent, resource_quota, &request, body, strlen(body),
|
425
|
+
deadline,
|
432
426
|
GRPC_CLOSURE_CREATE(response_cb, metadata_req, grpc_schedule_on_exec_ctx),
|
433
427
|
&metadata_req->response);
|
434
|
-
grpc_resource_quota_unref_internal(
|
428
|
+
grpc_resource_quota_unref_internal(resource_quota);
|
435
429
|
gpr_free(body);
|
436
430
|
}
|
437
431
|
|
@@ -483,25 +477,23 @@ grpc_call_credentials* grpc_google_refresh_token_credentials_create(
|
|
483
477
|
// Oauth2 Access Token credentials.
|
484
478
|
//
|
485
479
|
|
486
|
-
static void access_token_destruct(
|
487
|
-
grpc_call_credentials* creds) {
|
480
|
+
static void access_token_destruct(grpc_call_credentials* creds) {
|
488
481
|
grpc_access_token_credentials* c = (grpc_access_token_credentials*)creds;
|
489
|
-
GRPC_MDELEM_UNREF(
|
482
|
+
GRPC_MDELEM_UNREF(c->access_token_md);
|
490
483
|
}
|
491
484
|
|
492
485
|
static bool access_token_get_request_metadata(
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
grpc_error** error) {
|
486
|
+
grpc_call_credentials* creds, grpc_polling_entity* pollent,
|
487
|
+
grpc_auth_metadata_context context, grpc_credentials_mdelem_array* md_array,
|
488
|
+
grpc_closure* on_request_metadata, grpc_error** error) {
|
497
489
|
grpc_access_token_credentials* c = (grpc_access_token_credentials*)creds;
|
498
490
|
grpc_credentials_mdelem_array_add(md_array, c->access_token_md);
|
499
491
|
return true;
|
500
492
|
}
|
501
493
|
|
502
494
|
static void access_token_cancel_get_request_metadata(
|
503
|
-
|
504
|
-
|
495
|
+
grpc_call_credentials* c, grpc_credentials_mdelem_array* md_array,
|
496
|
+
grpc_error* error) {
|
505
497
|
GRPC_ERROR_UNREF(error);
|
506
498
|
}
|
507
499
|
|
@@ -523,11 +515,11 @@ grpc_call_credentials* grpc_access_token_credentials_create(
|
|
523
515
|
gpr_ref_init(&c->base.refcount, 1);
|
524
516
|
char* token_md_value;
|
525
517
|
gpr_asprintf(&token_md_value, "Bearer %s", access_token);
|
526
|
-
|
518
|
+
grpc_core::ExecCtx exec_ctx;
|
527
519
|
c->access_token_md = grpc_mdelem_from_slices(
|
528
|
-
|
520
|
+
grpc_slice_from_static_string(GRPC_AUTHORIZATION_METADATA_KEY),
|
529
521
|
grpc_slice_from_copied_string(token_md_value));
|
530
|
-
|
522
|
+
|
531
523
|
gpr_free(token_md_value);
|
532
524
|
return &c->base;
|
533
525
|
}
|