1
0
mirror of https://gitlab.xiph.org/xiph/icecast-server.git synced 2024-12-04 14:46:30 -05:00

Fix: do keep SSL state when reusing a TLS connection.

This commit is contained in:
Philipp Schafft 2015-02-06 10:25:40 +00:00
parent a18e2540fb
commit 7bc7472972
2 changed files with 19 additions and 0 deletions

View File

@ -103,6 +103,22 @@ static inline void client_reuseconnection(client_t *client) {
con = connection_create(con->sock, con->serversock, strdup(con->ip));
reuse = client->reuse;
client->con->sock = -1; /* TODO: do not use magic */
/* handle to keep the TLS connection */
#ifdef HAVE_OPENSSL
if (client->con->ssl) {
/* AHhhggrr.. That pain....
* stealing SSL state...
*/
con->ssl = client->con->ssl;
con->read = client->con->read;
con->send = client->con->send;
client->con->ssl = NULL;
client->con->read = NULL;
client->con->send = NULL;
}
#endif
client->reuse = ICECAST_REUSE_CLOSE;
client_destroy(client);

View File

@ -410,6 +410,9 @@ connection_t *connection_create (sock_t sock, sock_t serversock, char *ip)
void connection_uses_ssl(connection_t *con)
{
#ifdef HAVE_OPENSSL
if (con->ssl)
return;
con->read = connection_read_ssl;
con->send = connection_send_ssl;
con->ssl = SSL_new(ssl_ctx);