From 9f5013fcde48a252fcf1a34d89c8d376be9c2a84 Mon Sep 17 00:00:00 2001 From: Michele Bini Date: Thu, 13 Feb 2014 03:40:10 +0100 Subject: [PATCH] Properly release lock on error conditions --- src/daemon.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/daemon.c b/src/daemon.c index b852389..b0787ae 100644 --- a/src/daemon.c +++ b/src/daemon.c @@ -366,12 +366,15 @@ void *tcp_daemon(void *door) * While we are accepting the connections we keep the socket non * blocking. */ - if(set_nonblock_sk(dev_sk[i])) - return NULL; + if(set_nonblock_sk(dev_sk[i])) { + pthread_mutex_unlock(&tcp_daemon_lock); + return NULL; + } /* Shhh, it's listening... */ if(listen(dev_sk[i], 5) == -1) { inet_close(&dev_sk[i]); + pthread_mutex_unlock(&tcp_daemon_lock); return NULL; } }