diff --git a/src/mainclient.c b/src/mainclient.c index 17e40d1..9b67ea4 100644 --- a/src/mainclient.c +++ b/src/mainclient.c @@ -451,7 +451,9 @@ void releaseparam(struct clientparam * param) { if(param->filters[param->nfilters].filter->filter_clear) (*param->filters[param->nfilters].filter->filter_clear)(param->filters[param->nfilters].data); } + /* once: a second release must not give the slot back again */ if(param->connlim) stopconnlims(param); + param->connlim = 0; /* a slot held in the newest service on the listener after a reload */ if(param->newsrv){ slotrelease(param->newsrv); diff --git a/src/mainudp.c b/src/mainudp.c index 5e65b63..3b13cc1 100644 --- a/src/mainudp.c +++ b/src/mainudp.c @@ -440,7 +440,9 @@ static void udpadopt(struct udpstate *st){ if(param->filters[param->nfilters].filter->filter_clear) (*param->filters[param->nfilters].filter->filter_clear)(param->filters[param->nfilters].data); } + /* counted again by the new service's authorization */ if(param->connlim) stopconnlims(param); + param->connlim = 0; param->bandlimfunc = NULL; param->bandlims[0] = param->bandlimsout[0] = NULL; param->trafcountfunc = NULL;