mirror of
https://gitlab.xiph.org/xiph/icecast-server.git
synced 2025-02-02 15:07:36 -05:00
Fix: Fixes EPIPEs on TLS clients
Correctly handle died TLS connections on recent libssl. Closes: #2413
This commit is contained in:
parent
ec02a7b53d
commit
52634884ac
@ -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;
|
||||
|
18
src/tls.c
18
src/tls.c
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user