aboutsummaryrefslogtreecommitdiff
path: root/crypto/openssl/ssl/record
diff options
context:
space:
mode:
authorJung-uk Kim <jkim@FreeBSD.org>2022-11-01 22:58:59 +0000
committerJung-uk Kim <jkim@FreeBSD.org>2022-11-01 22:58:59 +0000
commitcfc39718e9cc18943a6f8428c560b02c6f590b16 (patch)
tree624fa2a11e13ef0ee181055f54c50975cbbb9491 /crypto/openssl/ssl/record
parentb7ac17b48bdfc688b54b29aa4feacb535c91aec2 (diff)
parentb6b67f23b82101d4c04c89f81d726b902ab77106 (diff)
Diffstat (limited to 'crypto/openssl/ssl/record')
-rw-r--r--crypto/openssl/ssl/record/rec_layer_s3.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/crypto/openssl/ssl/record/rec_layer_s3.c b/crypto/openssl/ssl/record/rec_layer_s3.c
index 1356bd7b7b70..501f58a2b373 100644
--- a/crypto/openssl/ssl/record/rec_layer_s3.c
+++ b/crypto/openssl/ssl/record/rec_layer_s3.c
@@ -1,5 +1,5 @@
/*
- * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the OpenSSL license (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -115,10 +115,22 @@ size_t ssl3_pending(const SSL *s)
if (s->rlayer.rstate == SSL_ST_READ_BODY)
return 0;
+ /* Take into account DTLS buffered app data */
+ if (SSL_IS_DTLS(s)) {
+ DTLS1_RECORD_DATA *rdata;
+ pitem *item, *iter;
+
+ iter = pqueue_iterator(s->rlayer.d->buffered_app_data.q);
+ while ((item = pqueue_next(&iter)) != NULL) {
+ rdata = item->data;
+ num += rdata->rrec.length;
+ }
+ }
+
for (i = 0; i < RECORD_LAYER_get_numrpipes(&s->rlayer); i++) {
if (SSL3_RECORD_get_type(&s->rlayer.rrec[i])
!= SSL3_RT_APPLICATION_DATA)
- return 0;
+ return num;
num += SSL3_RECORD_get_length(&s->rlayer.rrec[i]);
}