diff options
Diffstat (limited to 'src/lib/libssl/ssl_pkt.c')
| -rw-r--r-- | src/lib/libssl/ssl_pkt.c | 18 |
1 files changed, 5 insertions, 13 deletions
diff --git a/src/lib/libssl/ssl_pkt.c b/src/lib/libssl/ssl_pkt.c index 049a7df3c3..8a5f97e5c7 100644 --- a/src/lib/libssl/ssl_pkt.c +++ b/src/lib/libssl/ssl_pkt.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ssl_pkt.c,v 1.50 2021/08/30 19:25:43 jsing Exp $ */ | 1 | /* $OpenBSD: ssl_pkt.c,v 1.51 2021/10/25 10:09:28 jsing Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -127,14 +127,15 @@ static int ssl3_get_record(SSL *s); | |||
| 127 | * Force a WANT_READ return for certain error conditions where | 127 | * Force a WANT_READ return for certain error conditions where |
| 128 | * we don't want to spin internally. | 128 | * we don't want to spin internally. |
| 129 | */ | 129 | */ |
| 130 | static void | 130 | void |
| 131 | ssl_force_want_read(SSL *s) | 131 | ssl_force_want_read(SSL *s) |
| 132 | { | 132 | { |
| 133 | BIO * bio; | 133 | BIO *bio; |
| 134 | 134 | ||
| 135 | bio = SSL_get_rbio(s); | 135 | bio = SSL_get_rbio(s); |
| 136 | BIO_clear_retry_flags(bio); | 136 | BIO_clear_retry_flags(bio); |
| 137 | BIO_set_retry_read(bio); | 137 | BIO_set_retry_read(bio); |
| 138 | |||
| 138 | s->internal->rwstate = SSL_READING; | 139 | s->internal->rwstate = SSL_READING; |
| 139 | } | 140 | } |
| 140 | 141 | ||
| @@ -931,11 +932,6 @@ ssl3_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek) | |||
| 931 | 932 | ||
| 932 | if (!(s->internal->mode & SSL_MODE_AUTO_RETRY)) { | 933 | if (!(s->internal->mode & SSL_MODE_AUTO_RETRY)) { |
| 933 | if (S3I(s)->rbuf.left == 0) { | 934 | if (S3I(s)->rbuf.left == 0) { |
| 934 | /* no read-ahead left? */ | ||
| 935 | /* In the case where we try to read application data, | ||
| 936 | * but we trigger an SSL handshake, we return -1 with | ||
| 937 | * the retry option set. Otherwise renegotiation may | ||
| 938 | * cause nasty problems in the blocking world */ | ||
| 939 | ssl_force_want_read(s); | 935 | ssl_force_want_read(s); |
| 940 | return (-1); | 936 | return (-1); |
| 941 | } | 937 | } |
| @@ -1079,11 +1075,7 @@ ssl3_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek) | |||
| 1079 | } | 1075 | } |
| 1080 | 1076 | ||
| 1081 | if (!(s->internal->mode & SSL_MODE_AUTO_RETRY)) { | 1077 | if (!(s->internal->mode & SSL_MODE_AUTO_RETRY)) { |
| 1082 | if (S3I(s)->rbuf.left == 0) { /* no read-ahead left? */ | 1078 | if (S3I(s)->rbuf.left == 0) { |
| 1083 | /* In the case where we try to read application data, | ||
| 1084 | * but we trigger an SSL handshake, we return -1 with | ||
| 1085 | * the retry option set. Otherwise renegotiation may | ||
| 1086 | * cause nasty problems in the blocking world */ | ||
| 1087 | ssl_force_want_read(s); | 1079 | ssl_force_want_read(s); |
| 1088 | return (-1); | 1080 | return (-1); |
| 1089 | } | 1081 | } |
