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