Event loops: a relayed client released once

The ends of a client relayed as callbacks called releaseparam() and
then freeparam(), which releases it again: the connection limits' slot
was given back twice (see the commit before). freeparam() alone.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Vladimir Dubrovin 2026-10-27 00:03:23 +03:00
parent e0a05f343f
commit 97ab683654

View File

@ -888,14 +888,12 @@ static void cbmapfinish(void *arg){
param->res = (res == -2)? 21 : res;
param->maptail = NULL;
dolog(param, NULL);
releaseparam(param);
freeparam(param);
return;
}
if(res == -2) res = sockmap(param, timeo, usesplice);
param->res = res;
if(param->maptail) param->maptail(param, param->maptaildata);
releaseparam(param);
freeparam(param);
}
@ -923,7 +921,6 @@ static void cbmapdone(struct cbmap *m){
free(m);
param->maptail = NULL;
dolog(param, NULL);
releaseparam(param);
freeparam(param);
}
}