From 204c7ec18e84ce5463bad4ee124b5c5248f24bef Mon Sep 17 00:00:00 2001 From: venaas Date: Fri, 16 Feb 2007 12:14:41 +0000 Subject: don't exit when new thread can't be created after accept git-svn-id: https://svn.testnett.uninett.no/radsecproxy/trunk@63 e88ac4ed-0b26-0410-9574-a7f39faa03bf --- radsecproxy.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'radsecproxy.c') diff --git a/radsecproxy.c b/radsecproxy.c index c1df34f..f6bdc6c 100644 --- a/radsecproxy.c +++ b/radsecproxy.c @@ -1513,6 +1513,7 @@ void *tlsserverrd(void *arg) { errexit: s = SSL_get_fd(ssl); SSL_free(ssl); + shutdown(s, SHUT_RDWR); close(s); printf("tlsserverrd thread for %s exiting\n", client->peer.host); client->peer.ssl = NULL; @@ -1559,8 +1560,14 @@ int tlslistener() { } client->peer.ssl = SSL_new(ssl_ctx); SSL_set_fd(client->peer.ssl, snew); - if (pthread_create(&tlsserverth, NULL, tlsserverrd, (void *)client)) - errx("pthread_create failed"); + if (pthread_create(&tlsserverth, NULL, tlsserverrd, (void *)client)) { + err("pthread_create failed"); + SSL_free(client->peer.ssl); + shutdown(snew, SHUT_RDWR); + close(snew); + client->peer.ssl = NULL; + continue; + } pthread_detach(tlsserverth); } return 0; -- cgit v1.2.3