summaryrefslogtreecommitdiffstats
path: root/ssl
diff options
context:
space:
mode:
authorMatt Caswell <matt@openssl.org>2022-07-22 14:30:53 +0100
committerMatt Caswell <matt@openssl.org>2022-08-18 16:38:13 +0100
commit3de7695928478bce22dcf6bf87883688d895dc43 (patch)
tree4babebcdd7e9107696dc92e0186ea89776c52640 /ssl
parent1b285ac13726f443d1d737a1e2389ba6e17ba98f (diff)
Move SSL_MODE_RELEASE_BUFFERS into the read record layer
This resolves an outstanding "TODO" item. Reviewed-by: Hugo Landau <hlandau@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/18132)
Diffstat (limited to 'ssl')
-rw-r--r--ssl/record/methods/tls_common.c7
-rw-r--r--ssl/record/rec_layer_s3.c7
2 files changed, 6 insertions, 8 deletions
diff --git a/ssl/record/methods/tls_common.c b/ssl/record/methods/tls_common.c
index 4c999c52e8..34497f4cc0 100644
--- a/ssl/record/methods/tls_common.c
+++ b/ssl/record/methods/tls_common.c
@@ -298,7 +298,7 @@ int tls_default_read_n(OSSL_RECORD_LAYER *rl, size_t n, size_t max, int extend,
if (ret <= OSSL_RECORD_RETURN_RETRY) {
rb->left = left;
- if (rl->mode & SSL_MODE_RELEASE_BUFFERS && !rl->isdtls)
+ if ((rl->mode & SSL_MODE_RELEASE_BUFFERS) != 0 && !rl->isdtls)
if (len + left == 0)
rlayer_release_read_buffer(rl);
return ret;
@@ -990,6 +990,11 @@ int tls_release_record(OSSL_RECORD_LAYER *rl, void *rechandle)
rl->num_released++;
+ if (rl->curr_rec == rl->num_released
+ && (rl->mode & SSL_MODE_RELEASE_BUFFERS) != 0
+ && SSL3_BUFFER_get_left(&rl->rbuf) == 0)
+ rlayer_release_read_buffer(rl);
+
return OSSL_RECORD_RETURN_SUCCESS;
}
diff --git a/ssl/record/rec_layer_s3.c b/ssl/record/rec_layer_s3.c
index e41c3a1698..16247031bb 100644
--- a/ssl/record/rec_layer_s3.c
+++ b/ssl/record/rec_layer_s3.c
@@ -1368,13 +1368,6 @@ int ssl3_read_bytes(SSL *ssl, int type, int *recvd_type, unsigned char *buf,
/* We must have read empty records. Get more data */
goto start;
}
- /* TODO(RECLAYER): FIX ME */
-#if 0
- if (!peek && curr_rec == s->rlayer.num_recs
- && (s->mode & SSL_MODE_RELEASE_BUFFERS)
- && SSL3_BUFFER_get_left(rbuf) == 0)
- ssl3_release_read_buffer(s);
-#endif
*readbytes = totalbytes;
return 1;
}