mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-22 14:21:25 +02:00
BUG/MEDIUM: ssl: review polling on reneg.
SSL may return SSL_ERROR_WANT_WRITE or SSL_ERROR_WANT_READ when switching from data to handshake even if it does not need to poll first.
This commit is contained in:
parent
70d0ad560c
commit
8af8dd1a9a
@ -978,9 +978,9 @@ static int ssl_sock_to_buf(struct connection *conn, struct buffer *buf, int coun
|
|||||||
else {
|
else {
|
||||||
ret = SSL_get_error(conn->xprt_ctx, ret);
|
ret = SSL_get_error(conn->xprt_ctx, ret);
|
||||||
if (ret == SSL_ERROR_WANT_WRITE) {
|
if (ret == SSL_ERROR_WANT_WRITE) {
|
||||||
/* handshake is running, and it needs to poll for a write event */
|
/* handshake is running, and it needs to enable write */
|
||||||
conn->flags |= CO_FL_SSL_WAIT_HS;
|
conn->flags |= CO_FL_SSL_WAIT_HS;
|
||||||
__conn_sock_poll_send(conn);
|
__conn_sock_want_send(conn);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else if (ret == SSL_ERROR_WANT_READ) {
|
else if (ret == SSL_ERROR_WANT_READ) {
|
||||||
@ -1061,13 +1061,9 @@ static int ssl_sock_from_buf(struct connection *conn, struct buffer *buf, int fl
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else if (ret == SSL_ERROR_WANT_READ) {
|
else if (ret == SSL_ERROR_WANT_READ) {
|
||||||
/* handshake is running, and
|
/* handshake is running, and it needs to enable read */
|
||||||
it needs to poll for a read event,
|
|
||||||
write polling must be disabled cause
|
|
||||||
we are sure we can't write anything more
|
|
||||||
before handshake re-performed */
|
|
||||||
conn->flags |= CO_FL_SSL_WAIT_HS;
|
conn->flags |= CO_FL_SSL_WAIT_HS;
|
||||||
__conn_sock_poll_recv(conn);
|
__conn_sock_want_recv(conn);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
goto out_error;
|
goto out_error;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user