grpc 1.56.0.pre3 → 1.56.2
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/Makefile +4 -2
- data/include/grpc/grpc_security.h +19 -0
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +10 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +176 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +325 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +567 -543
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +150 -9
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +46 -32
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +18 -5
- data/src/core/ext/transport/chttp2/transport/parsing.cc +12 -12
- data/src/core/lib/backoff/random_early_detection.h +5 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +1 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +29 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +3 -0
- data/src/core/lib/iomgr/tcp_server_posix.cc +34 -12
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +12 -0
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +21 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +8 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +5 -1
- data/src/core/lib/security/security_connector/ssl_utils.cc +2 -1
- data/src/core/lib/security/security_connector/ssl_utils.h +1 -1
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +1 -1
- data/src/core/lib/surface/validate_metadata.cc +37 -22
- data/src/core/lib/surface/validate_metadata.h +13 -3
- data/src/core/tsi/ssl_transport_security.cc +5 -2
- data/src/core/tsi/ssl_transport_security.h +13 -1
- 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/version.rb +1 -1
- metadata +7 -5
@@ -30,6 +30,7 @@
|
|
30
30
|
#include "src/core/lib/iomgr/resolve_address.h"
|
31
31
|
#include "src/core/lib/iomgr/socket_utils_posix.h"
|
32
32
|
#include "src/core/lib/iomgr/tcp_server.h"
|
33
|
+
#include "src/core/lib/iomgr/timer.h"
|
33
34
|
#include "src/core/lib/resource_quota/memory_quota.h"
|
34
35
|
|
35
36
|
// one listening port
|
@@ -52,6 +53,11 @@ typedef struct grpc_tcp_listener {
|
|
52
53
|
// identified while iterating through 'next'.
|
53
54
|
struct grpc_tcp_listener* sibling;
|
54
55
|
int is_sibling;
|
56
|
+
// If an accept4() call fails, a timer is started to drain the accept queue in
|
57
|
+
// case no further connection attempts reach the gRPC server.
|
58
|
+
grpc_closure retry_closure;
|
59
|
+
grpc_timer retry_timer;
|
60
|
+
gpr_atm retry_timer_armed;
|
55
61
|
} grpc_tcp_listener;
|
56
62
|
|
57
63
|
// the overall server
|
@@ -139,4 +145,10 @@ grpc_error_handle grpc_tcp_server_prepare_socket(
|
|
139
145
|
// Ruturn true if the platform supports ifaddrs
|
140
146
|
bool grpc_tcp_server_have_ifaddrs(void);
|
141
147
|
|
148
|
+
// Initialize (but don't start) the timer and callback to retry accept4() on a
|
149
|
+
// listening socket after file descriptors have been exhausted. This must be
|
150
|
+
// called when creating a new listener.
|
151
|
+
void grpc_tcp_server_listener_initialize_retry_timer(
|
152
|
+
grpc_tcp_listener* listener);
|
153
|
+
|
142
154
|
#endif // GRPC_SRC_CORE_LIB_IOMGR_TCP_SERVER_UTILS_POSIX_H
|
@@ -18,6 +18,8 @@
|
|
18
18
|
|
19
19
|
#include <grpc/support/port_platform.h>
|
20
20
|
|
21
|
+
#include <grpc/support/atm.h>
|
22
|
+
|
21
23
|
#include "src/core/lib/iomgr/port.h"
|
22
24
|
|
23
25
|
#ifdef GRPC_POSIX_SOCKET_TCP_SERVER_UTILS_COMMON
|
@@ -81,6 +83,24 @@ static int get_max_accept_queue_size(void) {
|
|
81
83
|
return s_max_accept_queue_size;
|
82
84
|
}
|
83
85
|
|
86
|
+
static void listener_retry_timer_cb(void* arg, grpc_error_handle err) {
|
87
|
+
// Do nothing if cancelled.
|
88
|
+
if (!err.ok()) return;
|
89
|
+
grpc_tcp_listener* listener = static_cast<grpc_tcp_listener*>(arg);
|
90
|
+
gpr_atm_no_barrier_store(&listener->retry_timer_armed, false);
|
91
|
+
if (!grpc_fd_is_shutdown(listener->emfd)) {
|
92
|
+
grpc_fd_set_readable(listener->emfd);
|
93
|
+
}
|
94
|
+
}
|
95
|
+
|
96
|
+
void grpc_tcp_server_listener_initialize_retry_timer(
|
97
|
+
grpc_tcp_listener* listener) {
|
98
|
+
gpr_atm_no_barrier_store(&listener->retry_timer_armed, false);
|
99
|
+
grpc_timer_init_unset(&listener->retry_timer);
|
100
|
+
GRPC_CLOSURE_INIT(&listener->retry_closure, listener_retry_timer_cb, listener,
|
101
|
+
grpc_schedule_on_exec_ctx);
|
102
|
+
}
|
103
|
+
|
84
104
|
static grpc_error_handle add_socket_to_server(grpc_tcp_server* s, int fd,
|
85
105
|
const grpc_resolved_address* addr,
|
86
106
|
unsigned port_index,
|
@@ -112,6 +132,7 @@ static grpc_error_handle add_socket_to_server(grpc_tcp_server* s, int fd,
|
|
112
132
|
sp->server = s;
|
113
133
|
sp->fd = fd;
|
114
134
|
sp->emfd = grpc_fd_create(fd, name.c_str(), true);
|
135
|
+
grpc_tcp_server_listener_initialize_retry_timer(sp);
|
115
136
|
|
116
137
|
// Check and set fd as prellocated
|
117
138
|
if (grpc_tcp_server_pre_allocated_fd(s) == fd) {
|
@@ -120,3 +120,11 @@ void grpc_tls_credentials_options_set_tls_session_key_log_file_path(
|
|
120
120
|
}
|
121
121
|
options->set_tls_session_key_log_file_path(path != nullptr ? path : "");
|
122
122
|
}
|
123
|
+
|
124
|
+
void grpc_tls_credentials_options_set_send_client_ca_list(
|
125
|
+
grpc_tls_credentials_options* options, bool send_client_ca_list) {
|
126
|
+
if (options == nullptr) {
|
127
|
+
return;
|
128
|
+
}
|
129
|
+
options->set_send_client_ca_list(send_client_ca_list);
|
130
|
+
}
|
@@ -61,6 +61,7 @@ struct grpc_tls_credentials_options
|
|
61
61
|
const std::string& identity_cert_name() const { return identity_cert_name_; }
|
62
62
|
const std::string& tls_session_key_log_file_path() const { return tls_session_key_log_file_path_; }
|
63
63
|
const std::string& crl_directory() const { return crl_directory_; }
|
64
|
+
bool send_client_ca_list() const { return send_client_ca_list_; }
|
64
65
|
|
65
66
|
// Setters for member fields.
|
66
67
|
void set_cert_request_type(grpc_ssl_client_certificate_request_type cert_request_type) { cert_request_type_ = cert_request_type; }
|
@@ -81,6 +82,7 @@ struct grpc_tls_credentials_options
|
|
81
82
|
void set_tls_session_key_log_file_path(std::string tls_session_key_log_file_path) { tls_session_key_log_file_path_ = std::move(tls_session_key_log_file_path); }
|
82
83
|
// gRPC will enforce CRLs on all handshakes from all hashed CRL files inside of the crl_directory. If not set, an empty string will be used, which will not enable CRL checking. Only supported for OpenSSL version > 1.1.
|
83
84
|
void set_crl_directory(std::string crl_directory) { crl_directory_ = std::move(crl_directory); }
|
85
|
+
void set_send_client_ca_list(bool send_client_ca_list) { send_client_ca_list_ = send_client_ca_list; }
|
84
86
|
|
85
87
|
bool operator==(const grpc_tls_credentials_options& other) const {
|
86
88
|
return cert_request_type_ == other.cert_request_type_ &&
|
@@ -95,7 +97,8 @@ struct grpc_tls_credentials_options
|
|
95
97
|
watch_identity_pair_ == other.watch_identity_pair_ &&
|
96
98
|
identity_cert_name_ == other.identity_cert_name_ &&
|
97
99
|
tls_session_key_log_file_path_ == other.tls_session_key_log_file_path_ &&
|
98
|
-
crl_directory_ == other.crl_directory_
|
100
|
+
crl_directory_ == other.crl_directory_ &&
|
101
|
+
send_client_ca_list_ == other.send_client_ca_list_;
|
99
102
|
}
|
100
103
|
|
101
104
|
private:
|
@@ -112,6 +115,7 @@ struct grpc_tls_credentials_options
|
|
112
115
|
std::string identity_cert_name_;
|
113
116
|
std::string tls_session_key_log_file_path_;
|
114
117
|
std::string crl_directory_;
|
118
|
+
bool send_client_ca_list_ = false;
|
115
119
|
};
|
116
120
|
|
117
121
|
#endif // GRPC_SRC_CORE_LIB_SECURITY_CREDENTIALS_TLS_GRPC_TLS_CREDENTIALS_OPTIONS_H
|
@@ -465,7 +465,7 @@ grpc_security_status grpc_ssl_tsi_server_handshaker_factory_init(
|
|
465
465
|
grpc_ssl_client_certificate_request_type client_certificate_request,
|
466
466
|
tsi_tls_version min_tls_version, tsi_tls_version max_tls_version,
|
467
467
|
tsi::TlsSessionKeyLoggerCache::TlsSessionKeyLogger* tls_session_key_logger,
|
468
|
-
const char* crl_directory,
|
468
|
+
const char* crl_directory, bool send_client_ca_list,
|
469
469
|
tsi_ssl_server_handshaker_factory** handshaker_factory) {
|
470
470
|
size_t num_alpn_protocols = 0;
|
471
471
|
const char** alpn_protocol_strings =
|
@@ -483,6 +483,7 @@ grpc_security_status grpc_ssl_tsi_server_handshaker_factory_init(
|
|
483
483
|
options.max_tls_version = max_tls_version;
|
484
484
|
options.key_logger = tls_session_key_logger;
|
485
485
|
options.crl_directory = crl_directory;
|
486
|
+
options.send_client_ca_list = send_client_ca_list;
|
486
487
|
const tsi_result result =
|
487
488
|
tsi_create_ssl_server_handshaker_factory_with_options(&options,
|
488
489
|
handshaker_factory);
|
@@ -93,7 +93,7 @@ grpc_security_status grpc_ssl_tsi_server_handshaker_factory_init(
|
|
93
93
|
grpc_ssl_client_certificate_request_type client_certificate_request,
|
94
94
|
tsi_tls_version min_tls_version, tsi_tls_version max_tls_version,
|
95
95
|
tsi::TlsSessionKeyLoggerCache::TlsSessionKeyLogger* tls_session_key_logger,
|
96
|
-
const char* crl_directory,
|
96
|
+
const char* crl_directory, bool send_client_ca_list,
|
97
97
|
tsi_ssl_server_handshaker_factory** handshaker_factory);
|
98
98
|
|
99
99
|
// Free the memory occupied by key cert pairs.
|
@@ -830,7 +830,7 @@ TlsServerSecurityConnector::UpdateHandshakerFactoryLocked() {
|
|
830
830
|
grpc_get_tsi_tls_version(options_->min_tls_version()),
|
831
831
|
grpc_get_tsi_tls_version(options_->max_tls_version()),
|
832
832
|
tls_session_key_logger_.get(), options_->crl_directory().c_str(),
|
833
|
-
&server_handshaker_factory_);
|
833
|
+
options_->send_client_ca_list(), &server_handshaker_factory_);
|
834
834
|
// Free memory.
|
835
835
|
grpc_tsi_ssl_pem_key_cert_pairs_destroy(pem_key_cert_pairs,
|
836
836
|
num_key_cert_pairs);
|
@@ -21,8 +21,6 @@
|
|
21
21
|
#include "src/core/lib/surface/validate_metadata.h"
|
22
22
|
|
23
23
|
#include "absl/status/status.h"
|
24
|
-
#include "absl/strings/escaping.h"
|
25
|
-
#include "absl/strings/str_cat.h"
|
26
24
|
#include "absl/strings/string_view.h"
|
27
25
|
|
28
26
|
#include <grpc/grpc.h>
|
@@ -46,32 +44,49 @@ class LegalHeaderKeyBits : public BitSet<256> {
|
|
46
44
|
};
|
47
45
|
constexpr LegalHeaderKeyBits g_legal_header_key_bits;
|
48
46
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
absl::BytesToHexString(x), ")"));
|
53
|
-
}
|
54
|
-
|
55
|
-
absl::Status ConformsTo(absl::string_view x, const BitSet<256>& legal_bits,
|
56
|
-
const char* err_desc) {
|
47
|
+
ValidateMetadataResult ConformsTo(absl::string_view x,
|
48
|
+
const BitSet<256>& legal_bits,
|
49
|
+
ValidateMetadataResult error) {
|
57
50
|
for (uint8_t c : x) {
|
58
51
|
if (!legal_bits.is_set(c)) {
|
59
|
-
return
|
52
|
+
return error;
|
60
53
|
}
|
61
54
|
}
|
62
|
-
return
|
55
|
+
return ValidateMetadataResult::kOk;
|
56
|
+
}
|
57
|
+
|
58
|
+
absl::Status UpgradeToStatus(ValidateMetadataResult result) {
|
59
|
+
if (result == ValidateMetadataResult::kOk) return absl::OkStatus();
|
60
|
+
return absl::InternalError(ValidateMetadataResultToString(result));
|
63
61
|
}
|
62
|
+
|
64
63
|
} // namespace
|
65
64
|
|
66
|
-
|
65
|
+
ValidateMetadataResult ValidateHeaderKeyIsLegal(absl::string_view key) {
|
67
66
|
if (key.empty()) {
|
68
|
-
return
|
67
|
+
return ValidateMetadataResult::kCannotBeZeroLength;
|
69
68
|
}
|
70
69
|
if (key.size() > UINT32_MAX) {
|
71
|
-
return
|
72
|
-
|
70
|
+
return ValidateMetadataResult::kTooLong;
|
71
|
+
}
|
72
|
+
return ConformsTo(key, g_legal_header_key_bits,
|
73
|
+
ValidateMetadataResult::kIllegalHeaderKey);
|
74
|
+
}
|
75
|
+
|
76
|
+
const char* ValidateMetadataResultToString(ValidateMetadataResult result) {
|
77
|
+
switch (result) {
|
78
|
+
case ValidateMetadataResult::kOk:
|
79
|
+
return "Ok";
|
80
|
+
case ValidateMetadataResult::kCannotBeZeroLength:
|
81
|
+
return "Metadata keys cannot be zero length";
|
82
|
+
case ValidateMetadataResult::kTooLong:
|
83
|
+
return "Metadata keys cannot be larger than UINT32_MAX";
|
84
|
+
case ValidateMetadataResult::kIllegalHeaderKey:
|
85
|
+
return "Illegal header key";
|
86
|
+
case ValidateMetadataResult::kIllegalHeaderValue:
|
87
|
+
return "Illegal header value";
|
73
88
|
}
|
74
|
-
return
|
89
|
+
GPR_UNREACHABLE_CODE(return "Unknown");
|
75
90
|
}
|
76
91
|
|
77
92
|
} // namespace grpc_core
|
@@ -82,8 +97,8 @@ static int error2int(grpc_error_handle error) {
|
|
82
97
|
}
|
83
98
|
|
84
99
|
grpc_error_handle grpc_validate_header_key_is_legal(const grpc_slice& slice) {
|
85
|
-
return grpc_core::ValidateHeaderKeyIsLegal(
|
86
|
-
grpc_core::StringViewFromSlice(slice));
|
100
|
+
return grpc_core::UpgradeToStatus(grpc_core::ValidateHeaderKeyIsLegal(
|
101
|
+
grpc_core::StringViewFromSlice(slice)));
|
87
102
|
}
|
88
103
|
|
89
104
|
int grpc_header_key_is_legal(grpc_slice slice) {
|
@@ -104,9 +119,9 @@ constexpr LegalHeaderNonBinValueBits g_legal_header_non_bin_value_bits;
|
|
104
119
|
|
105
120
|
grpc_error_handle grpc_validate_header_nonbin_value_is_legal(
|
106
121
|
const grpc_slice& slice) {
|
107
|
-
return grpc_core::
|
108
|
-
|
109
|
-
|
122
|
+
return grpc_core::UpgradeToStatus(grpc_core::ConformsTo(
|
123
|
+
grpc_core::StringViewFromSlice(slice), g_legal_header_non_bin_value_bits,
|
124
|
+
grpc_core::ValidateMetadataResult::kIllegalHeaderValue));
|
110
125
|
}
|
111
126
|
|
112
127
|
int grpc_header_nonbin_value_is_legal(grpc_slice slice) {
|
@@ -25,7 +25,6 @@
|
|
25
25
|
|
26
26
|
#include <cstring>
|
27
27
|
|
28
|
-
#include "absl/status/status.h"
|
29
28
|
#include "absl/strings/string_view.h"
|
30
29
|
|
31
30
|
#include <grpc/slice.h>
|
@@ -35,9 +34,20 @@
|
|
35
34
|
|
36
35
|
namespace grpc_core {
|
37
36
|
|
38
|
-
|
37
|
+
enum class ValidateMetadataResult : uint8_t {
|
38
|
+
kOk,
|
39
|
+
kCannotBeZeroLength,
|
40
|
+
kTooLong,
|
41
|
+
kIllegalHeaderKey,
|
42
|
+
kIllegalHeaderValue
|
43
|
+
};
|
39
44
|
|
40
|
-
|
45
|
+
const char* ValidateMetadataResultToString(ValidateMetadataResult result);
|
46
|
+
|
47
|
+
// Returns nullopt if the key is legal, otherwise returns an error message.
|
48
|
+
ValidateMetadataResult ValidateHeaderKeyIsLegal(absl::string_view key);
|
49
|
+
|
50
|
+
} // namespace grpc_core
|
41
51
|
|
42
52
|
grpc_error_handle grpc_validate_header_key_is_legal(const grpc_slice& slice);
|
43
53
|
grpc_error_handle grpc_validate_header_nonbin_value_is_legal(
|
@@ -2202,12 +2202,15 @@ tsi_result tsi_create_ssl_server_handshaker_factory_with_options(
|
|
2202
2202
|
STACK_OF(X509_NAME)* root_names = nullptr;
|
2203
2203
|
result = ssl_ctx_load_verification_certs(
|
2204
2204
|
impl->ssl_contexts[i], options->pem_client_root_certs,
|
2205
|
-
strlen(options->pem_client_root_certs),
|
2205
|
+
strlen(options->pem_client_root_certs),
|
2206
|
+
options->send_client_ca_list ? &root_names : nullptr);
|
2206
2207
|
if (result != TSI_OK) {
|
2207
2208
|
gpr_log(GPR_ERROR, "Invalid verification certs.");
|
2208
2209
|
break;
|
2209
2210
|
}
|
2210
|
-
|
2211
|
+
if (options->send_client_ca_list) {
|
2212
|
+
SSL_CTX_set_client_CA_list(impl->ssl_contexts[i], root_names);
|
2213
|
+
}
|
2211
2214
|
}
|
2212
2215
|
switch (options->client_certificate_request) {
|
2213
2216
|
case TSI_DONT_REQUEST_CLIENT_CERTIFICATE:
|
@@ -325,6 +325,17 @@ struct tsi_ssl_server_handshaker_options {
|
|
325
325
|
// crl checking. Only OpenSSL version > 1.1 is supported for CRL checking
|
326
326
|
const char* crl_directory;
|
327
327
|
|
328
|
+
// If true, the SSL server sends a list of CA names to the client in the
|
329
|
+
// ServerHello. This list of CA names is extracted from the server's trust
|
330
|
+
// bundle, and the client may use this lint as a hint to decide which
|
331
|
+
// certificate it should send to the server.
|
332
|
+
//
|
333
|
+
// WARNING: This is an extremely dangerous option. If the server's trust
|
334
|
+
// bundle is sufficiently large, then setting this bit to true will result in
|
335
|
+
// the server being unable to generate a ServerHello, and hence the server
|
336
|
+
// will be unusable.
|
337
|
+
bool send_client_ca_list;
|
338
|
+
|
328
339
|
tsi_ssl_server_handshaker_options()
|
329
340
|
: pem_key_cert_pairs(nullptr),
|
330
341
|
num_key_cert_pairs(0),
|
@@ -338,7 +349,8 @@ struct tsi_ssl_server_handshaker_options {
|
|
338
349
|
min_tls_version(tsi_tls_version::TSI_TLS1_2),
|
339
350
|
max_tls_version(tsi_tls_version::TSI_TLS1_3),
|
340
351
|
key_logger(nullptr),
|
341
|
-
crl_directory(nullptr)
|
352
|
+
crl_directory(nullptr),
|
353
|
+
send_client_ca_list(true) {}
|
342
354
|
};
|
343
355
|
|
344
356
|
// Creates a server handshaker factory.
|
@@ -188,6 +188,7 @@ grpc_tls_credentials_options_set_identity_cert_name_type grpc_tls_credentials_op
|
|
188
188
|
grpc_tls_credentials_options_set_cert_request_type_type grpc_tls_credentials_options_set_cert_request_type_import;
|
189
189
|
grpc_tls_credentials_options_set_crl_directory_type grpc_tls_credentials_options_set_crl_directory_import;
|
190
190
|
grpc_tls_credentials_options_set_verify_server_cert_type grpc_tls_credentials_options_set_verify_server_cert_import;
|
191
|
+
grpc_tls_credentials_options_set_send_client_ca_list_type grpc_tls_credentials_options_set_send_client_ca_list_import;
|
191
192
|
grpc_tls_credentials_options_set_check_call_host_type grpc_tls_credentials_options_set_check_call_host_import;
|
192
193
|
grpc_insecure_credentials_create_type grpc_insecure_credentials_create_import;
|
193
194
|
grpc_insecure_server_credentials_create_type grpc_insecure_server_credentials_create_import;
|
@@ -474,6 +475,7 @@ void grpc_rb_load_imports(HMODULE library) {
|
|
474
475
|
grpc_tls_credentials_options_set_cert_request_type_import = (grpc_tls_credentials_options_set_cert_request_type_type) GetProcAddress(library, "grpc_tls_credentials_options_set_cert_request_type");
|
475
476
|
grpc_tls_credentials_options_set_crl_directory_import = (grpc_tls_credentials_options_set_crl_directory_type) GetProcAddress(library, "grpc_tls_credentials_options_set_crl_directory");
|
476
477
|
grpc_tls_credentials_options_set_verify_server_cert_import = (grpc_tls_credentials_options_set_verify_server_cert_type) GetProcAddress(library, "grpc_tls_credentials_options_set_verify_server_cert");
|
478
|
+
grpc_tls_credentials_options_set_send_client_ca_list_import = (grpc_tls_credentials_options_set_send_client_ca_list_type) GetProcAddress(library, "grpc_tls_credentials_options_set_send_client_ca_list");
|
477
479
|
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");
|
478
480
|
grpc_insecure_credentials_create_import = (grpc_insecure_credentials_create_type) GetProcAddress(library, "grpc_insecure_credentials_create");
|
479
481
|
grpc_insecure_server_credentials_create_import = (grpc_insecure_server_credentials_create_type) GetProcAddress(library, "grpc_insecure_server_credentials_create");
|
@@ -539,6 +539,9 @@ extern grpc_tls_credentials_options_set_crl_directory_type grpc_tls_credentials_
|
|
539
539
|
typedef void(*grpc_tls_credentials_options_set_verify_server_cert_type)(grpc_tls_credentials_options* options, int verify_server_cert);
|
540
540
|
extern grpc_tls_credentials_options_set_verify_server_cert_type grpc_tls_credentials_options_set_verify_server_cert_import;
|
541
541
|
#define grpc_tls_credentials_options_set_verify_server_cert grpc_tls_credentials_options_set_verify_server_cert_import
|
542
|
+
typedef void(*grpc_tls_credentials_options_set_send_client_ca_list_type)(grpc_tls_credentials_options* options, bool send_client_ca_list);
|
543
|
+
extern grpc_tls_credentials_options_set_send_client_ca_list_type grpc_tls_credentials_options_set_send_client_ca_list_import;
|
544
|
+
#define grpc_tls_credentials_options_set_send_client_ca_list grpc_tls_credentials_options_set_send_client_ca_list_import
|
542
545
|
typedef void(*grpc_tls_credentials_options_set_check_call_host_type)(grpc_tls_credentials_options* options, int check_call_host);
|
543
546
|
extern grpc_tls_credentials_options_set_check_call_host_type grpc_tls_credentials_options_set_check_call_host_import;
|
544
547
|
#define grpc_tls_credentials_options_set_check_call_host grpc_tls_credentials_options_set_check_call_host_import
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: grpc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.56.
|
4
|
+
version: 1.56.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- gRPC Authors
|
8
8
|
autorequire:
|
9
9
|
bindir: src/ruby/bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-07-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: google-protobuf
|
@@ -465,6 +465,8 @@ files:
|
|
465
465
|
- src/core/ext/transport/chttp2/transport/hpack_encoder.h
|
466
466
|
- src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc
|
467
467
|
- src/core/ext/transport/chttp2/transport/hpack_encoder_table.h
|
468
|
+
- src/core/ext/transport/chttp2/transport/hpack_parse_result.cc
|
469
|
+
- src/core/ext/transport/chttp2/transport/hpack_parse_result.h
|
468
470
|
- src/core/ext/transport/chttp2/transport/hpack_parser.cc
|
469
471
|
- src/core/ext/transport/chttp2/transport/hpack_parser.h
|
470
472
|
- src/core/ext/transport/chttp2/transport/hpack_parser_table.cc
|
@@ -3240,11 +3242,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
3240
3242
|
version: 2.5.0
|
3241
3243
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
3242
3244
|
requirements:
|
3243
|
-
- - "
|
3245
|
+
- - ">="
|
3244
3246
|
- !ruby/object:Gem::Version
|
3245
|
-
version:
|
3247
|
+
version: '0'
|
3246
3248
|
requirements: []
|
3247
|
-
rubygems_version: 3.4.
|
3249
|
+
rubygems_version: 3.4.17
|
3248
3250
|
signing_key:
|
3249
3251
|
specification_version: 4
|
3250
3252
|
summary: GRPC system in Ruby
|