grpc 1.80.0.pre1-aarch64-linux-musl → 1.81.0.pre1-aarch64-linux-musl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/src/ruby/bin/math_pb.rb +1 -1
- data/src/ruby/ext/grpc/extconf.rb +1 -15
- data/src/ruby/ext/grpc/rb_call_credentials.c +1 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +3 -0
- data/src/ruby/lib/grpc/3.2/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/3.3/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/3.4/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/4.0/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +1 -1
- data/src/ruby/pb/grpc/health/v1/health_pb.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +1 -1
- data/src/ruby/spec/client_server_spec.rb +40 -0
- metadata +3 -4
- data/src/ruby/lib/grpc/3.1/grpc_c.so +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d840ba921ed5e9976efb0af0b0d1cd29e8dcb10c6104065aeb17972c73a464f5
|
|
4
|
+
data.tar.gz: 881b4d1bf81da16885130cd8b550044b6856362ceb75b24850b192cd45b0cff7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8bc37b3b3410a177881f01bc1ded5c56b17701afbd339df66fc1008aaa484fd4bae8a71167a252cd1fdc0060ffadf2648c4e8278f2d145c95d293c09d82dd3e2
|
|
7
|
+
data.tar.gz: 68b96bd45bf3f10f9585e358dfe66bf8dc0805e0d2b4e9c2c86213892c914d0f2d439524f5bb748900ea4a75050a4341e175c6ff29a5ba06fe62ecd180831d27
|
data/src/ruby/bin/math_pb.rb
CHANGED
|
@@ -7,7 +7,7 @@ require 'google/protobuf'
|
|
|
7
7
|
|
|
8
8
|
descriptor_data = "\n\nmath.proto\x12\x04math\",\n\x07\x44ivArgs\x12\x10\n\x08\x64ividend\x18\x01 \x01(\x03\x12\x0f\n\x07\x64ivisor\x18\x02 \x01(\x03\"/\n\x08\x44ivReply\x12\x10\n\x08quotient\x18\x01 \x01(\x03\x12\x11\n\tremainder\x18\x02 \x01(\x03\"\x18\n\x07\x46ibArgs\x12\r\n\x05limit\x18\x01 \x01(\x03\"\x12\n\x03Num\x12\x0b\n\x03num\x18\x01 \x01(\x03\"\x19\n\x08\x46ibReply\x12\r\n\x05\x63ount\x18\x01 \x01(\x03\x32\xa4\x01\n\x04Math\x12&\n\x03\x44iv\x12\r.math.DivArgs\x1a\x0e.math.DivReply\"\x00\x12.\n\x07\x44ivMany\x12\r.math.DivArgs\x1a\x0e.math.DivReply\"\x00(\x01\x30\x01\x12#\n\x03\x46ib\x12\r.math.FibArgs\x1a\t.math.Num\"\x00\x30\x01\x12\x1f\n\x03Sum\x12\t.math.Num\x1a\t.math.Num\"\x00(\x01\x62\x06proto3"
|
|
9
9
|
|
|
10
|
-
pool = Google::Protobuf::DescriptorPool.generated_pool
|
|
10
|
+
pool = ::Google::Protobuf::DescriptorPool.generated_pool
|
|
11
11
|
pool.add_serialized_file(descriptor_data)
|
|
12
12
|
|
|
13
13
|
module Math
|
|
@@ -154,21 +154,7 @@ def have_ruby_abi_version()
|
|
|
154
154
|
# See also discussion for Ruby 3.4 in https://github.com/grpc/grpc/pull/38338 and https://github.com/grpc/grpc/pull/38487
|
|
155
155
|
return false if RUBY_PATCHLEVEL >= 0
|
|
156
156
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
begin
|
|
160
|
-
current_version = Gem::Version.new(RUBY_VERSION)
|
|
161
|
-
if current_version >= min_version
|
|
162
|
-
puts "Ruby version #{RUBY_VERSION} >= 3.2. Assuming ruby_abi_version symbol is present."
|
|
163
|
-
true
|
|
164
|
-
else
|
|
165
|
-
puts "Ruby version #{RUBY_VERSION} < 3.2. Assuming ruby_abi_version symbol is NOT present."
|
|
166
|
-
false
|
|
167
|
-
end
|
|
168
|
-
rescue ArgumentError
|
|
169
|
-
puts "Failed to parse ruby version #{RUBY_VERSION}. Assuming ruby_abi_version symbol is NOT present."
|
|
170
|
-
false
|
|
171
|
-
end
|
|
157
|
+
true
|
|
172
158
|
end
|
|
173
159
|
|
|
174
160
|
def ext_export_filename()
|
|
@@ -306,6 +306,7 @@ static VALUE grpc_rb_call_credentials_compose(int argc, VALUE* argv,
|
|
|
306
306
|
return self;
|
|
307
307
|
}
|
|
308
308
|
mark = rb_ary_new();
|
|
309
|
+
rb_ary_push(mark, self);
|
|
309
310
|
creds = grpc_rb_get_wrapped_call_credentials(self);
|
|
310
311
|
for (int i = 0; i < argc; i++) {
|
|
311
312
|
rb_ary_push(mark, argv[i]);
|
|
@@ -107,6 +107,7 @@ grpc_local_credentials_create_type grpc_local_credentials_create_import;
|
|
|
107
107
|
grpc_local_server_credentials_create_type grpc_local_server_credentials_create_import;
|
|
108
108
|
grpc_tls_credentials_options_set_check_call_host_type grpc_tls_credentials_options_set_check_call_host_import;
|
|
109
109
|
grpc_tls_credentials_options_set_tls_session_key_log_file_path_type grpc_tls_credentials_options_set_tls_session_key_log_file_path_import;
|
|
110
|
+
grpc_tls_credentials_options_set_key_exchange_groups_type grpc_tls_credentials_options_set_key_exchange_groups_import;
|
|
110
111
|
grpc_metadata_array_init_type grpc_metadata_array_init_import;
|
|
111
112
|
grpc_metadata_array_destroy_type grpc_metadata_array_destroy_import;
|
|
112
113
|
grpc_call_details_init_type grpc_call_details_init_import;
|
|
@@ -395,6 +396,7 @@ void grpc_rb_load_imports(HMODULE library) {
|
|
|
395
396
|
grpc_local_server_credentials_create_import = (grpc_local_server_credentials_create_type) GetProcAddress(library, "grpc_local_server_credentials_create");
|
|
396
397
|
grpc_tls_credentials_options_set_check_call_host_import = (grpc_tls_credentials_options_set_check_call_host_type) GetProcAddress(library, "grpc_tls_credentials_options_set_check_call_host");
|
|
397
398
|
grpc_tls_credentials_options_set_tls_session_key_log_file_path_import = (grpc_tls_credentials_options_set_tls_session_key_log_file_path_type) GetProcAddress(library, "grpc_tls_credentials_options_set_tls_session_key_log_file_path");
|
|
399
|
+
grpc_tls_credentials_options_set_key_exchange_groups_import = (grpc_tls_credentials_options_set_key_exchange_groups_type) GetProcAddress(library, "grpc_tls_credentials_options_set_key_exchange_groups");
|
|
398
400
|
grpc_metadata_array_init_import = (grpc_metadata_array_init_type) GetProcAddress(library, "grpc_metadata_array_init");
|
|
399
401
|
grpc_metadata_array_destroy_import = (grpc_metadata_array_destroy_type) GetProcAddress(library, "grpc_metadata_array_destroy");
|
|
400
402
|
grpc_call_details_init_import = (grpc_call_details_init_type) GetProcAddress(library, "grpc_call_details_init");
|
|
@@ -297,6 +297,9 @@ extern grpc_tls_credentials_options_set_check_call_host_type grpc_tls_credential
|
|
|
297
297
|
typedef void(*grpc_tls_credentials_options_set_tls_session_key_log_file_path_type)(grpc_tls_credentials_options* options, const char* path);
|
|
298
298
|
extern grpc_tls_credentials_options_set_tls_session_key_log_file_path_type grpc_tls_credentials_options_set_tls_session_key_log_file_path_import;
|
|
299
299
|
#define grpc_tls_credentials_options_set_tls_session_key_log_file_path grpc_tls_credentials_options_set_tls_session_key_log_file_path_import
|
|
300
|
+
typedef void(*grpc_tls_credentials_options_set_key_exchange_groups_type)(grpc_tls_credentials_options* options, const grpc_tls_key_exchange_group* groups, size_t num_groups);
|
|
301
|
+
extern grpc_tls_credentials_options_set_key_exchange_groups_type grpc_tls_credentials_options_set_key_exchange_groups_import;
|
|
302
|
+
#define grpc_tls_credentials_options_set_key_exchange_groups grpc_tls_credentials_options_set_key_exchange_groups_import
|
|
300
303
|
typedef void(*grpc_metadata_array_init_type)(grpc_metadata_array* array);
|
|
301
304
|
extern grpc_metadata_array_init_type grpc_metadata_array_init_import;
|
|
302
305
|
#define grpc_metadata_array_init grpc_metadata_array_init_import
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -20,7 +20,7 @@ cd $(dirname $0)/../../..
|
|
|
20
20
|
# protoc and grpc_*_plugin binaries can be obtained by running
|
|
21
21
|
# $ bazel build @com_google_protobuf//:protoc //src/compiler:all
|
|
22
22
|
PROTOC=bazel-bin/external/protobuf+/protoc
|
|
23
|
-
PLUGIN=protoc-gen-grpc=bazel-bin/src/compiler/
|
|
23
|
+
PLUGIN=protoc-gen-grpc=bazel-bin/src/compiler/grpc_ruby_plugin_binary
|
|
24
24
|
|
|
25
25
|
$PROTOC -I src/proto src/proto/grpc/health/v1/health.proto \
|
|
26
26
|
--grpc_out=src/ruby/pb \
|
|
@@ -7,7 +7,7 @@ require 'google/protobuf'
|
|
|
7
7
|
|
|
8
8
|
descriptor_data = "\n\x1bgrpc/health/v1/health.proto\x12\x0egrpc.health.v1\"%\n\x12HealthCheckRequest\x12\x0f\n\x07service\x18\x01 \x01(\t\"\xa9\x01\n\x13HealthCheckResponse\x12\x41\n\x06status\x18\x01 \x01(\x0e\x32\x31.grpc.health.v1.HealthCheckResponse.ServingStatus\"O\n\rServingStatus\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x0b\n\x07SERVING\x10\x01\x12\x0f\n\x0bNOT_SERVING\x10\x02\x12\x13\n\x0fSERVICE_UNKNOWN\x10\x03\x32\xae\x01\n\x06Health\x12P\n\x05\x43heck\x12\".grpc.health.v1.HealthCheckRequest\x1a#.grpc.health.v1.HealthCheckResponse\x12R\n\x05Watch\x12\".grpc.health.v1.HealthCheckRequest\x1a#.grpc.health.v1.HealthCheckResponse0\x01\x42\x61\n\x11io.grpc.health.v1B\x0bHealthProtoP\x01Z,google.golang.org/grpc/health/grpc_health_v1\xaa\x02\x0eGrpc.Health.V1b\x06proto3"
|
|
9
9
|
|
|
10
|
-
pool = Google::Protobuf::DescriptorPool.generated_pool
|
|
10
|
+
pool = ::Google::Protobuf::DescriptorPool.generated_pool
|
|
11
11
|
pool.add_serialized_file(descriptor_data)
|
|
12
12
|
|
|
13
13
|
module Grpc
|
|
@@ -7,7 +7,7 @@ require 'google/protobuf'
|
|
|
7
7
|
|
|
8
8
|
descriptor_data = "\n\"src/proto/grpc/testing/empty.proto\x12\x0cgrpc.testing\"\x07\n\x05\x45mptyb\x06proto3"
|
|
9
9
|
|
|
10
|
-
pool = Google::Protobuf::DescriptorPool.generated_pool
|
|
10
|
+
pool = ::Google::Protobuf::DescriptorPool.generated_pool
|
|
11
11
|
pool.add_serialized_file(descriptor_data)
|
|
12
12
|
|
|
13
13
|
module Grpc
|
|
@@ -7,7 +7,7 @@ require 'google/protobuf'
|
|
|
7
7
|
|
|
8
8
|
descriptor_data = "\n%src/proto/grpc/testing/messages.proto\x12\x0cgrpc.testing\"\x1a\n\tBoolValue\x12\r\n\x05value\x18\x01 \x01(\x08\"@\n\x07Payload\x12\'\n\x04type\x18\x01 \x01(\x0e\x32\x19.grpc.testing.PayloadType\x12\x0c\n\x04\x62ody\x18\x02 \x01(\x0c\"+\n\nEchoStatus\x12\x0c\n\x04\x63ode\x18\x01 \x01(\x05\x12\x0f\n\x07message\x18\x02 \x01(\t\"\xc3\x03\n\rSimpleRequest\x12\x30\n\rresponse_type\x18\x01 \x01(\x0e\x32\x19.grpc.testing.PayloadType\x12\x15\n\rresponse_size\x18\x02 \x01(\x05\x12&\n\x07payload\x18\x03 \x01(\x0b\x32\x15.grpc.testing.Payload\x12\x15\n\rfill_username\x18\x04 \x01(\x08\x12\x18\n\x10\x66ill_oauth_scope\x18\x05 \x01(\x08\x12\x34\n\x13response_compressed\x18\x06 \x01(\x0b\x32\x17.grpc.testing.BoolValue\x12\x31\n\x0fresponse_status\x18\x07 \x01(\x0b\x32\x18.grpc.testing.EchoStatus\x12\x32\n\x11\x65xpect_compressed\x18\x08 \x01(\x0b\x32\x17.grpc.testing.BoolValue\x12\x16\n\x0e\x66ill_server_id\x18\t \x01(\x08\x12\x1e\n\x16\x66ill_grpclb_route_type\x18\n \x01(\x08\x12;\n\x15orca_per_query_report\x18\x0b \x01(\x0b\x32\x1c.grpc.testing.TestOrcaReport\"\xbe\x01\n\x0eSimpleResponse\x12&\n\x07payload\x18\x01 \x01(\x0b\x32\x15.grpc.testing.Payload\x12\x10\n\x08username\x18\x02 \x01(\t\x12\x13\n\x0boauth_scope\x18\x03 \x01(\t\x12\x11\n\tserver_id\x18\x04 \x01(\t\x12\x38\n\x11grpclb_route_type\x18\x05 \x01(\x0e\x32\x1d.grpc.testing.GrpclbRouteType\x12\x10\n\x08hostname\x18\x06 \x01(\t\"w\n\x19StreamingInputCallRequest\x12&\n\x07payload\x18\x01 \x01(\x0b\x32\x15.grpc.testing.Payload\x12\x32\n\x11\x65xpect_compressed\x18\x02 \x01(\x0b\x32\x17.grpc.testing.BoolValue\"=\n\x1aStreamingInputCallResponse\x12\x1f\n\x17\x61ggregated_payload_size\x18\x01 \x01(\x05\"d\n\x12ResponseParameters\x12\x0c\n\x04size\x18\x01 \x01(\x05\x12\x13\n\x0binterval_us\x18\x02 \x01(\x05\x12+\n\ncompressed\x18\x03 \x01(\x0b\x32\x17.grpc.testing.BoolValue\"\x9f\x02\n\x1aStreamingOutputCallRequest\x12\x30\n\rresponse_type\x18\x01 \x01(\x0e\x32\x19.grpc.testing.PayloadType\x12=\n\x13response_parameters\x18\x02 \x03(\x0b\x32 .grpc.testing.ResponseParameters\x12&\n\x07payload\x18\x03 \x01(\x0b\x32\x15.grpc.testing.Payload\x12\x31\n\x0fresponse_status\x18\x07 \x01(\x0b\x32\x18.grpc.testing.EchoStatus\x12\x35\n\x0forca_oob_report\x18\x08 \x01(\x0b\x32\x1c.grpc.testing.TestOrcaReport\"E\n\x1bStreamingOutputCallResponse\x12&\n\x07payload\x18\x01 \x01(\x0b\x32\x15.grpc.testing.Payload\"3\n\x0fReconnectParams\x12 \n\x18max_reconnect_backoff_ms\x18\x01 \x01(\x05\"3\n\rReconnectInfo\x12\x0e\n\x06passed\x18\x01 \x01(\x08\x12\x12\n\nbackoff_ms\x18\x02 \x03(\x05\"X\n\x18LoadBalancerStatsRequest\x12\x10\n\x08num_rpcs\x18\x01 \x01(\x05\x12\x13\n\x0btimeout_sec\x18\x02 \x01(\x05\x12\x15\n\rmetadata_keys\x18\x03 \x03(\t\"\xb2\x08\n\x19LoadBalancerStatsResponse\x12M\n\x0crpcs_by_peer\x18\x01 \x03(\x0b\x32\x37.grpc.testing.LoadBalancerStatsResponse.RpcsByPeerEntry\x12\x14\n\x0cnum_failures\x18\x02 \x01(\x05\x12Q\n\x0erpcs_by_method\x18\x03 \x03(\x0b\x32\x39.grpc.testing.LoadBalancerStatsResponse.RpcsByMethodEntry\x12W\n\x11metadatas_by_peer\x18\x04 \x03(\x0b\x32<.grpc.testing.LoadBalancerStatsResponse.MetadatasByPeerEntry\x1ao\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\x12\x42\n\x04type\x18\x03 \x01(\x0e\x32\x34.grpc.testing.LoadBalancerStatsResponse.MetadataType\x1aV\n\x0bRpcMetadata\x12G\n\x08metadata\x18\x01 \x03(\x0b\x32\x35.grpc.testing.LoadBalancerStatsResponse.MetadataEntry\x1a[\n\x0eMetadataByPeer\x12I\n\x0crpc_metadata\x18\x01 \x03(\x0b\x32\x33.grpc.testing.LoadBalancerStatsResponse.RpcMetadata\x1a\x99\x01\n\nRpcsByPeer\x12X\n\x0crpcs_by_peer\x18\x01 \x03(\x0b\x32\x42.grpc.testing.LoadBalancerStatsResponse.RpcsByPeer.RpcsByPeerEntry\x1a\x31\n\x0fRpcsByPeerEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x31\n\x0fRpcsByPeerEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1ag\n\x11RpcsByMethodEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x41\n\x05value\x18\x02 \x01(\x0b\x32\x32.grpc.testing.LoadBalancerStatsResponse.RpcsByPeer:\x02\x38\x01\x1an\n\x14MetadatasByPeerEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x45\n\x05value\x18\x02 \x01(\x0b\x32\x36.grpc.testing.LoadBalancerStatsResponse.MetadataByPeer:\x02\x38\x01\"6\n\x0cMetadataType\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x0b\n\x07INITIAL\x10\x01\x12\x0c\n\x08TRAILING\x10\x02\"%\n#LoadBalancerAccumulatedStatsRequest\"\xd8\x07\n$LoadBalancerAccumulatedStatsResponse\x12v\n\x1anum_rpcs_started_by_method\x18\x01 \x03(\x0b\x32N.grpc.testing.LoadBalancerAccumulatedStatsResponse.NumRpcsStartedByMethodEntryB\x02\x18\x01\x12z\n\x1cnum_rpcs_succeeded_by_method\x18\x02 \x03(\x0b\x32P.grpc.testing.LoadBalancerAccumulatedStatsResponse.NumRpcsSucceededByMethodEntryB\x02\x18\x01\x12t\n\x19num_rpcs_failed_by_method\x18\x03 \x03(\x0b\x32M.grpc.testing.LoadBalancerAccumulatedStatsResponse.NumRpcsFailedByMethodEntryB\x02\x18\x01\x12`\n\x10stats_per_method\x18\x04 \x03(\x0b\x32\x46.grpc.testing.LoadBalancerAccumulatedStatsResponse.StatsPerMethodEntry\x1a=\n\x1bNumRpcsStartedByMethodEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a?\n\x1dNumRpcsSucceededByMethodEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a<\n\x1aNumRpcsFailedByMethodEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\xae\x01\n\x0bMethodStats\x12\x14\n\x0crpcs_started\x18\x01 \x01(\x05\x12Z\n\x06result\x18\x02 \x03(\x0b\x32J.grpc.testing.LoadBalancerAccumulatedStatsResponse.MethodStats.ResultEntry\x1a-\n\x0bResultEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1au\n\x13StatsPerMethodEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12M\n\x05value\x18\x02 \x01(\x0b\x32>.grpc.testing.LoadBalancerAccumulatedStatsResponse.MethodStats:\x02\x38\x01\"\xba\x02\n\x16\x43lientConfigureRequest\x12;\n\x05types\x18\x01 \x03(\x0e\x32,.grpc.testing.ClientConfigureRequest.RpcType\x12?\n\x08metadata\x18\x02 \x03(\x0b\x32-.grpc.testing.ClientConfigureRequest.Metadata\x12\x13\n\x0btimeout_sec\x18\x03 \x01(\x05\x1a\x62\n\x08Metadata\x12:\n\x04type\x18\x01 \x01(\x0e\x32,.grpc.testing.ClientConfigureRequest.RpcType\x12\x0b\n\x03key\x18\x02 \x01(\t\x12\r\n\x05value\x18\x03 \x01(\t\")\n\x07RpcType\x12\x0e\n\nEMPTY_CALL\x10\x00\x12\x0e\n\nUNARY_CALL\x10\x01\"\x19\n\x17\x43lientConfigureResponse\"\x19\n\nMemorySize\x12\x0b\n\x03rss\x18\x01 \x01(\x03\"\xb6\x02\n\x0eTestOrcaReport\x12\x17\n\x0f\x63pu_utilization\x18\x01 \x01(\x01\x12\x1a\n\x12memory_utilization\x18\x02 \x01(\x01\x12\x43\n\x0crequest_cost\x18\x03 \x03(\x0b\x32-.grpc.testing.TestOrcaReport.RequestCostEntry\x12\x42\n\x0butilization\x18\x04 \x03(\x0b\x32-.grpc.testing.TestOrcaReport.UtilizationEntry\x1a\x32\n\x10RequestCostEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x01:\x02\x38\x01\x1a\x32\n\x10UtilizationEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x01:\x02\x38\x01\"V\n\x16SetReturnStatusRequest\x12\x1b\n\x13grpc_code_to_return\x18\x01 \x01(\x05\x12\x1f\n\x17grpc_status_description\x18\x02 \x01(\t\"\xe7\x01\n\x0bHookRequest\x12=\n\x07\x63ommand\x18\x01 \x01(\x0e\x32,.grpc.testing.HookRequest.HookRequestCommand\x12\x1b\n\x13grpc_code_to_return\x18\x02 \x01(\x05\x12\x1f\n\x17grpc_status_description\x18\x03 \x01(\t\x12\x13\n\x0bserver_port\x18\x04 \x01(\x05\"F\n\x12HookRequestCommand\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\t\n\x05START\x10\x01\x12\x08\n\x04STOP\x10\x02\x12\n\n\x06RETURN\x10\x03\"\x0e\n\x0cHookResponse*\x1f\n\x0bPayloadType\x12\x10\n\x0c\x43OMPRESSABLE\x10\x00*o\n\x0fGrpclbRouteType\x12\x1d\n\x19GRPCLB_ROUTE_TYPE_UNKNOWN\x10\x00\x12\x1e\n\x1aGRPCLB_ROUTE_TYPE_FALLBACK\x10\x01\x12\x1d\n\x19GRPCLB_ROUTE_TYPE_BACKEND\x10\x02\x42\x1d\n\x1bio.grpc.testing.integrationb\x06proto3"
|
|
9
9
|
|
|
10
|
-
pool = Google::Protobuf::DescriptorPool.generated_pool
|
|
10
|
+
pool = ::Google::Protobuf::DescriptorPool.generated_pool
|
|
11
11
|
pool.add_serialized_file(descriptor_data)
|
|
12
12
|
|
|
13
13
|
module Grpc
|
|
@@ -10,7 +10,7 @@ require 'src/proto/grpc/testing/messages_pb'
|
|
|
10
10
|
|
|
11
11
|
descriptor_data = "\n!src/proto/grpc/testing/test.proto\x12\x0cgrpc.testing\x1a\"src/proto/grpc/testing/empty.proto\x1a%src/proto/grpc/testing/messages.proto2\xcb\x05\n\x0bTestService\x12\x35\n\tEmptyCall\x12\x13.grpc.testing.Empty\x1a\x13.grpc.testing.Empty\x12\x46\n\tUnaryCall\x12\x1b.grpc.testing.SimpleRequest\x1a\x1c.grpc.testing.SimpleResponse\x12O\n\x12\x43\x61\x63heableUnaryCall\x12\x1b.grpc.testing.SimpleRequest\x1a\x1c.grpc.testing.SimpleResponse\x12l\n\x13StreamingOutputCall\x12(.grpc.testing.StreamingOutputCallRequest\x1a).grpc.testing.StreamingOutputCallResponse0\x01\x12i\n\x12StreamingInputCall\x12\'.grpc.testing.StreamingInputCallRequest\x1a(.grpc.testing.StreamingInputCallResponse(\x01\x12i\n\x0e\x46ullDuplexCall\x12(.grpc.testing.StreamingOutputCallRequest\x1a).grpc.testing.StreamingOutputCallResponse(\x01\x30\x01\x12i\n\x0eHalfDuplexCall\x12(.grpc.testing.StreamingOutputCallRequest\x1a).grpc.testing.StreamingOutputCallResponse(\x01\x30\x01\x12=\n\x11UnimplementedCall\x12\x13.grpc.testing.Empty\x1a\x13.grpc.testing.Empty2U\n\x14UnimplementedService\x12=\n\x11UnimplementedCall\x12\x13.grpc.testing.Empty\x1a\x13.grpc.testing.Empty2\x89\x01\n\x10ReconnectService\x12;\n\x05Start\x12\x1d.grpc.testing.ReconnectParams\x1a\x13.grpc.testing.Empty\x12\x38\n\x04Stop\x12\x13.grpc.testing.Empty\x1a\x1b.grpc.testing.ReconnectInfo2\x86\x02\n\x18LoadBalancerStatsService\x12\x63\n\x0eGetClientStats\x12&.grpc.testing.LoadBalancerStatsRequest\x1a\'.grpc.testing.LoadBalancerStatsResponse\"\x00\x12\x84\x01\n\x19GetClientAccumulatedStats\x12\x31.grpc.testing.LoadBalancerAccumulatedStatsRequest\x1a\x32.grpc.testing.LoadBalancerAccumulatedStatsResponse\"\x00\x32\xcc\x01\n\x0bHookService\x12\x30\n\x04Hook\x12\x13.grpc.testing.Empty\x1a\x13.grpc.testing.Empty\x12L\n\x0fSetReturnStatus\x12$.grpc.testing.SetReturnStatusRequest\x1a\x13.grpc.testing.Empty\x12=\n\x11\x43learReturnStatus\x12\x13.grpc.testing.Empty\x1a\x13.grpc.testing.Empty2\xd5\x01\n\x16XdsUpdateHealthService\x12\x36\n\nSetServing\x12\x13.grpc.testing.Empty\x1a\x13.grpc.testing.Empty\x12\x39\n\rSetNotServing\x12\x13.grpc.testing.Empty\x1a\x13.grpc.testing.Empty\x12H\n\x0fSendHookRequest\x12\x19.grpc.testing.HookRequest\x1a\x1a.grpc.testing.HookResponse2{\n\x1fXdsUpdateClientConfigureService\x12X\n\tConfigure\x12$.grpc.testing.ClientConfigureRequest\x1a%.grpc.testing.ClientConfigureResponseB\x1d\n\x1bio.grpc.testing.integrationb\x06proto3"
|
|
12
12
|
|
|
13
|
-
pool = Google::Protobuf::DescriptorPool.generated_pool
|
|
13
|
+
pool = ::Google::Protobuf::DescriptorPool.generated_pool
|
|
14
14
|
pool.add_serialized_file(descriptor_data)
|
|
15
15
|
|
|
16
16
|
module Grpc
|
|
@@ -279,6 +279,46 @@ describe 'the secure http client/server' do
|
|
|
279
279
|
end
|
|
280
280
|
end
|
|
281
281
|
|
|
282
|
+
it 'plugin procs survive GC after their CallCredentials wrapper is collected' do
|
|
283
|
+
# Regression test for use-after-free in grpc_metadata_credentials_plugin.
|
|
284
|
+
# When CallCredentials are composed via a.compose(b), the resulting
|
|
285
|
+
# wrapper marks b but NOT a. If a's Ruby wrapper is GC'd, the C-level
|
|
286
|
+
# composite still holds a's plugin. Without the pin_plugin_proc fix,
|
|
287
|
+
# a's proc would be collected, and invoking the callback would crash
|
|
288
|
+
# with a segfault (rb_id_table_lookup on freed memory).
|
|
289
|
+
first_call_count = 0
|
|
290
|
+
|
|
291
|
+
first_creds = GRPC::Core::CallCredentials.new(proc {
|
|
292
|
+
first_call_count += 1
|
|
293
|
+
{ 'first-key' => 'first-value' }
|
|
294
|
+
})
|
|
295
|
+
second_creds = GRPC::Core::CallCredentials.new(proc {
|
|
296
|
+
{ 'second-key' => 'second-value' }
|
|
297
|
+
})
|
|
298
|
+
composed = first_creds.compose(second_creds)
|
|
299
|
+
|
|
300
|
+
# Drop references. composed.mark includes second_creds but NOT first_creds,
|
|
301
|
+
# so first_creds' Ruby wrapper becomes GC-eligible while its C plugin
|
|
302
|
+
# survives inside the composite.
|
|
303
|
+
first_creds = nil # rubocop:disable Lint/UselessAssignment
|
|
304
|
+
second_creds = nil # rubocop:disable Lint/UselessAssignment
|
|
305
|
+
|
|
306
|
+
# Force GC to collect the first_creds wrapper. Without the fix, the proc
|
|
307
|
+
# from first_creds would also be collected here.
|
|
308
|
+
GC.start(full_mark: true, immediate_sweep: true)
|
|
309
|
+
|
|
310
|
+
# Make an RPC with the composed credentials — both plugin callbacks fire.
|
|
311
|
+
# Without the fix, accessing the freed proc would crash the process.
|
|
312
|
+
echo_service = EchoService.new
|
|
313
|
+
run_services_on_server(@server, services: [echo_service]) do
|
|
314
|
+
expect(@stub.an_rpc(EchoMsg.new,
|
|
315
|
+
credentials: composed)).to be_a(EchoMsg)
|
|
316
|
+
end
|
|
317
|
+
expect(first_call_count).to eq(1)
|
|
318
|
+
expect(echo_service.received_md[0]['first-key']).to eq('first-value')
|
|
319
|
+
expect(echo_service.received_md[0]['second-key']).to eq('second-value')
|
|
320
|
+
end
|
|
321
|
+
|
|
282
322
|
it 'modifies large metadata with CallCredentials' do
|
|
283
323
|
val_array = %w(
|
|
284
324
|
'00000000000000000000000000000000000000000000000000000000000000',
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: grpc
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.81.0.pre1
|
|
5
5
|
platform: aarch64-linux-musl
|
|
6
6
|
authors:
|
|
7
7
|
- gRPC Authors
|
|
@@ -267,7 +267,6 @@ files:
|
|
|
267
267
|
- src/ruby/ext/grpc/rb_xds_server_credentials.c
|
|
268
268
|
- src/ruby/ext/grpc/rb_xds_server_credentials.h
|
|
269
269
|
- src/ruby/lib/grpc.rb
|
|
270
|
-
- src/ruby/lib/grpc/3.1/grpc_c.so
|
|
271
270
|
- src/ruby/lib/grpc/3.2/grpc_c.so
|
|
272
271
|
- src/ruby/lib/grpc/3.3/grpc_c.so
|
|
273
272
|
- src/ruby/lib/grpc/3.4/grpc_c.so
|
|
@@ -362,7 +361,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
362
361
|
requirements:
|
|
363
362
|
- - ">="
|
|
364
363
|
- !ruby/object:Gem::Version
|
|
365
|
-
version: '3.
|
|
364
|
+
version: '3.2'
|
|
366
365
|
- - "<"
|
|
367
366
|
- !ruby/object:Gem::Version
|
|
368
367
|
version: 4.1.dev
|
|
@@ -372,7 +371,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
372
371
|
- !ruby/object:Gem::Version
|
|
373
372
|
version: 3.3.22
|
|
374
373
|
requirements: []
|
|
375
|
-
rubygems_version: 4.0.
|
|
374
|
+
rubygems_version: 4.0.11
|
|
376
375
|
specification_version: 4
|
|
377
376
|
summary: GRPC system in Ruby
|
|
378
377
|
test_files:
|
|
Binary file
|