diff --git a/crypto/bio/bss_dgram_pair.c b/crypto/bio/bss_dgram_pair.c index 534a2216aa..08dd802d8f 100644 --- a/crypto/bio/bss_dgram_pair.c +++ b/crypto/bio/bss_dgram_pair.c @@ -279,8 +279,9 @@ static int dgram_pair_init(BIO *bio) 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) { diff --git a/test/bio_dgram_test.c b/test/bio_dgram_test.c index f6c3e30c14..70157493f9 100644 --- a/test/bio_dgram_test.c +++ b/test/bio_dgram_test.c @@ -559,8 +559,11 @@ static int test_bio_dgram_pair(int idx) 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;