diff --git a/src/mainclient.c b/src/mainclient.c index db0cabf..a31ff6c 100644 --- a/src/mainclient.c +++ b/src/mainclient.c @@ -419,7 +419,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 d7b68f1..f2463fb 100644 --- a/src/mainudp.c +++ b/src/mainudp.c @@ -433,7 +433,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;