The size of the datagram header is significantly larger that we might
expect on NonStop (probably driven by sizeof(BIO_ADDR)). We adjust the
size of the default buffer to take into account the header size and the
mtu.
Fixes #22013
Reviewed-by: Tom Cosgrove <tom.cosgrove@arm.com>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Hugo Landau <hlandau@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22058)
if (b == NULL)
return 0;
- b->req_buf_len = 17*1024; /* default buffer size */
b->mtu = 1472; /* conservative default MTU */
+ /* default buffer size */
+ b->req_buf_len = 9 * (sizeof(struct dgram_hdr) + b->mtu);
b->lock = CRYPTO_THREAD_lock_new();
if (b->lock == NULL) {
goto err;
/*
- * Should be able to fit at least 9 datagrams in default write buffer size
- * in worst case
+ * The number of datagrams we can fit depends on the size of the default
+ * write buffer size, the size of the datagram header and the size of the
+ * payload data we send in each datagram. The max payload data is based on
+ * the mtu. The default write buffer size is 9 * (sizeof(header) + mtu) so
+ * we expect at least 9 maximally sized datagrams to fit in the buffer.
*/
if (!TEST_int_ge(i, 9))
goto err;