From 0b616383b85d4a7839470f34861671a34250422f Mon Sep 17 00:00:00 2001 From: Bowen Song Date: Mon, 25 Sep 2017 14:01:02 +0100 Subject: [PATCH] set PTHREAD_MUTEX_RECURSIVE attribute on the counter_mutex, fixes #193 --- src/proxymain.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/proxymain.c b/src/proxymain.c index e9d7e7c..e3d1c66 100644 --- a/src/proxymain.c +++ b/src/proxymain.c @@ -842,6 +842,7 @@ int MODULEMAINFUNC (int argc, char** argv){ void srvinit(struct srvparam * srv, struct clientparam *param){ + pthread_mutexattr_t mutexattr; memset(srv, 0, sizeof(struct srvparam)); srv->version = conf.version + 1; @@ -870,7 +871,9 @@ void srvinit(struct srvparam * srv, struct clientparam *param){ param->paused = srv->paused; param->remsock = param->clisock = param->ctrlsock = param->ctrlsocksrv = INVALID_SOCKET; *SAFAMILY(¶m->req) = *SAFAMILY(¶m->sinsl) = *SAFAMILY(¶m->sinsr) = *SAFAMILY(¶m->sincr) = *SAFAMILY(¶m->sincl) = AF_INET; - pthread_mutex_init(&srv->counter_mutex, NULL); + pthread_mutexattr_init(&mutexattr); + pthread_mutexattr_settype(&mutexattr, PTHREAD_MUTEX_RECURSIVE); + pthread_mutex_init(&srv->counter_mutex, &mutexattr); srv->intsa = conf.intsa; srv->extsa = conf.extsa; #ifndef NOIPV6