summaryrefslogtreecommitdiff
path: root/src/lib/libssl/tls13_record_layer.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libssl/tls13_record_layer.c')
-rw-r--r--src/lib/libssl/tls13_record_layer.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/lib/libssl/tls13_record_layer.c b/src/lib/libssl/tls13_record_layer.c
index 2188d517a8..658a6d6a9e 100644
--- a/src/lib/libssl/tls13_record_layer.c
+++ b/src/lib/libssl/tls13_record_layer.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: tls13_record_layer.c,v 1.44 2020/05/20 14:58:33 beck Exp $ */ 1/* $OpenBSD: tls13_record_layer.c,v 1.45 2020/05/23 11:57:41 jsing Exp $ */
2/* 2/*
3 * Copyright (c) 2018, 2019 Joel Sing <jsing@openbsd.org> 3 * Copyright (c) 2018, 2019 Joel Sing <jsing@openbsd.org>
4 * 4 *
@@ -34,6 +34,7 @@ struct tls13_record_layer {
34 int handshake_completed; 34 int handshake_completed;
35 int legacy_alerts_allowed; 35 int legacy_alerts_allowed;
36 int phh; 36 int phh;
37 int phh_retry;
37 38
38 /* 39 /*
39 * Read and/or write channels are closed due to an alert being 40 * Read and/or write channels are closed due to an alert being
@@ -233,6 +234,12 @@ tls13_record_layer_handshake_completed(struct tls13_record_layer *rl)
233 rl->handshake_completed = 1; 234 rl->handshake_completed = 1;
234} 235}
235 236
237void
238tls13_record_layer_set_retry_after_phh(struct tls13_record_layer *rl, int retry)
239{
240 rl->phh_retry = retry;
241}
242
236static ssize_t 243static ssize_t
237tls13_record_layer_process_alert(struct tls13_record_layer *rl) 244tls13_record_layer_process_alert(struct tls13_record_layer *rl)
238{ 245{
@@ -930,8 +937,12 @@ tls13_record_layer_read_internal(struct tls13_record_layer *rl,
930 */ 937 */
931 rl->phh = 0; 938 rl->phh = 0;
932 939
933 if (ret == TLS13_IO_SUCCESS) 940 if (ret == TLS13_IO_SUCCESS) {
934 return TLS13_IO_WANT_RETRY; 941 if (rl->phh_retry)
942 return TLS13_IO_WANT_RETRY;
943
944 return TLS13_IO_WANT_POLLIN;
945 }
935 946
936 return ret; 947 return ret;
937 } 948 }