summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/libssl/tls13_internal.h3
-rw-r--r--src/lib/libssl/tls13_record_layer.c17
2 files changed, 16 insertions, 4 deletions
diff --git a/src/lib/libssl/tls13_internal.h b/src/lib/libssl/tls13_internal.h
index 7e188981f4..770c18d6ad 100644
--- a/src/lib/libssl/tls13_internal.h
+++ b/src/lib/libssl/tls13_internal.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: tls13_internal.h,v 1.81 2020/05/19 01:30:34 beck Exp $ */ 1/* $OpenBSD: tls13_internal.h,v 1.82 2020/05/23 11:57:41 jsing Exp $ */
2/* 2/*
3 * Copyright (c) 2018 Bob Beck <beck@openbsd.org> 3 * Copyright (c) 2018 Bob Beck <beck@openbsd.org>
4 * Copyright (c) 2018 Theo Buehler <tb@openbsd.org> 4 * Copyright (c) 2018 Theo Buehler <tb@openbsd.org>
@@ -198,6 +198,7 @@ void tls13_record_layer_set_hash(struct tls13_record_layer *rl,
198 const EVP_MD *hash); 198 const EVP_MD *hash);
199void tls13_record_layer_set_legacy_version(struct tls13_record_layer *rl, 199void tls13_record_layer_set_legacy_version(struct tls13_record_layer *rl,
200 uint16_t version); 200 uint16_t version);
201void tls13_record_layer_set_retry_after_phh(struct tls13_record_layer *rl, int retry);
201void tls13_record_layer_handshake_completed(struct tls13_record_layer *rl); 202void tls13_record_layer_handshake_completed(struct tls13_record_layer *rl);
202int tls13_record_layer_set_read_traffic_key(struct tls13_record_layer *rl, 203int tls13_record_layer_set_read_traffic_key(struct tls13_record_layer *rl,
203 struct tls13_secret *read_key); 204 struct tls13_secret *read_key);
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 }