@@ -188,16 +188,26 @@ bool fastly_http_req_downstream_client_ip_addr(fastly_world_list_u8_t *ret, fast
188
188
189
189
bool fastly_http_req_downstream_tls_cipher_openssl_name (fastly_world_string_t *ret,
190
190
fastly_error_t *err) {
191
- ret->ptr = static_cast <char *>(cabi_malloc (128 , 1 ));
192
- return convert_result (fastly::req_downstream_tls_cipher_openssl_name (
193
- reinterpret_cast <char *>(ret->ptr ), 128 , &ret->len ),
194
- err);
191
+ auto default_size = 128 ;
192
+ ret->ptr = static_cast <char *>(cabi_malloc (default_size, 1 ));
193
+ auto status = fastly::req_downstream_tls_cipher_openssl_name (
194
+ reinterpret_cast <char *>(ret->ptr ), default_size, &ret->len );
195
+ if (status == FASTLY_ERROR_BUFFER_LEN) {
196
+ cabi_realloc (ret->ptr , default_size, 4 , ret->len );
197
+ status = fastly::req_downstream_tls_cipher_openssl_name (reinterpret_cast <char *>(ret->ptr ), ret->len , &ret->len );
198
+ }
199
+ return convert_result (status, err);
195
200
}
196
201
197
202
bool fastly_http_req_downstream_tls_protocol (fastly_world_string_t *ret, fastly_error_t *err) {
198
- ret->ptr = static_cast <char *>(cabi_malloc (32 , 1 ));
199
- return convert_result (
200
- fastly::req_downstream_tls_protocol (reinterpret_cast <char *>(ret->ptr ), 32 , &ret->len ), err);
203
+ auto default_size = 32 ;
204
+ ret->ptr = static_cast <char *>(cabi_malloc (default_size, 1 ));
205
+ auto status = fastly::req_downstream_tls_protocol (reinterpret_cast <char *>(ret->ptr ), default_size, &ret->len );
206
+ if (status == FASTLY_ERROR_BUFFER_LEN) {
207
+ cabi_realloc (ret->ptr , default_size, 4 , ret->len );
208
+ status = fastly::req_downstream_tls_protocol (reinterpret_cast <char *>(ret->ptr ), ret->len , &ret->len );
209
+ }
210
+ return convert_result (status, err);
201
211
}
202
212
203
213
bool fastly_http_req_downstream_tls_raw_client_certificate (fastly_world_list_u8_t *ret,
@@ -215,9 +225,14 @@ bool fastly_http_req_downstream_tls_raw_client_certificate(fastly_world_list_u8_
215
225
}
216
226
217
227
bool fastly_http_req_downstream_tls_ja3_md5 (fastly_world_list_u8_t *ret, fastly_error_t *err) {
218
- ret->ptr = static_cast <uint8_t *>(cabi_malloc (16 , 1 ));
219
- return convert_result (
220
- fastly::req_downstream_tls_ja3_md5 (reinterpret_cast <char *>(ret->ptr ), &ret->len ), err);
228
+ auto default_size = 16 ;
229
+ ret->ptr = static_cast <uint8_t *>(cabi_malloc (default_size, 1 ));
230
+ auto status = fastly::req_downstream_tls_ja3_md5 (reinterpret_cast <char *>(ret->ptr ), &ret->len );
231
+ if (status == FASTLY_ERROR_BUFFER_LEN) {
232
+ cabi_realloc (ret->ptr , default_size, 4 , ret->len );
233
+ status = fastly::req_downstream_tls_ja3_md5 (reinterpret_cast <char *>(ret->ptr , &ret->len );
234
+ }
235
+ return convert_result (status, err);
221
236
}
222
237
bool fastly_http_req_downstream_tls_client_hello (fastly_world_list_u8_t *ret, fastly_error_t *err) {
223
238
auto default_size = 512 ;
0 commit comments