1
0
mirror of https://gitlab.xiph.org/xiph/icecast-server.git synced 2024-06-02 06:01:10 +00:00

Fix: Fixes EPIPEs on TLS clients

Correctly handle died TLS connections on recent libssl.

Closes: #2413
This commit is contained in:
Philipp Schafft 2021-10-26 18:59:51 +00:00
parent ec02a7b53d
commit 52634884ac
2 changed files with 17 additions and 3 deletions

View File

@ -206,8 +206,6 @@ static int connection_send_tls(connection_t *con, const void *buf, size_t len)
ssize_t bytes = tls_write(con->tls, buf, len);
if (bytes < 0) {
if (tls_want_io(con->tls) > 0)
return -1;
con->error = 1;
} else {
con->sent_bytes += bytes;

View File

@ -260,10 +260,26 @@ ssize_t tls_read(tls_t *tls, void *buffer, size_t len)
}
ssize_t tls_write(tls_t *tls, const void *buffer, size_t len)
{
int ret;
if (!tls)
return -1;
return SSL_write(tls->ssl, buffer, len);
ret = SSL_write(tls->ssl, buffer, len);
if (ret <= 0) {
switch (SSL_get_error(tls->ssl, ret)) {
case SSL_ERROR_SYSCALL:
case SSL_ERROR_SSL:
return -1;
break;
default:
return 0;
break;
}
}
return ret;
}
#else
void tls_initialize(void)