mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-01-19 04:00:46 +00:00
BUG/MEDIUM: ssl: Don't pretend we can retry a recv/send if we got a shutr/w.
In ha_ssl_write() and ha_ssl_read(), don't pretend we can retry a read/write if we got a shutr/shutw, or we will never properly shutdown the connection.
This commit is contained in:
parent
0c50b1ecbb
commit
b51937ebaa
@ -271,10 +271,11 @@ static int ha_ssl_write(BIO *h, const char *buf, int num)
|
||||
tmpbuf.data = num;
|
||||
tmpbuf.head = 0;
|
||||
ret = ctx->xprt->snd_buf(ctx->conn, ctx->xprt_ctx, &tmpbuf, num, 0);
|
||||
if (ret == 0 && !(ctx->conn->flags & CO_FL_ERROR)) {
|
||||
if (ret == 0 && !(ctx->conn->flags & (CO_FL_ERROR | CO_FL_SOCK_WR_SH))) {
|
||||
BIO_set_retry_write(h);
|
||||
ret = -1;
|
||||
}
|
||||
} else if (ret == 0)
|
||||
BIO_clear_retry_flags(h);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -306,10 +307,11 @@ static int ha_ssl_read(BIO *h, char *buf, int size)
|
||||
tmpbuf.data = 0;
|
||||
tmpbuf.head = 0;
|
||||
ret = ctx->xprt->rcv_buf(ctx->conn, ctx->xprt_ctx, &tmpbuf, size, 0);
|
||||
if (ret == 0 && !(ctx->conn->flags & CO_FL_ERROR)) {
|
||||
if (ret == 0 && !(ctx->conn->flags & (CO_FL_ERROR | CO_FL_SOCK_RD_SH))) {
|
||||
BIO_set_retry_read(h);
|
||||
ret = -1;
|
||||
}
|
||||
} else if (ret == 0)
|
||||
BIO_clear_retry_flags(h);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user