X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=utcp.c;h=c93d4bb35bc476717fa9233b7c7a43e73d546a77;hb=40ce4f195beb7a64fd326cda201d4f8a684fa72f;hp=5ba4eaade2f585d6ad39a702cadef13c64b01e2a;hpb=42a2ce613c748e506129da781856ec8f85c92f26;p=utcp diff --git a/utcp.c b/utcp.c index 5ba4eaa..c93d4bb 100644 --- a/utcp.c +++ b/utcp.c @@ -273,6 +273,7 @@ static void free_connection(struct utcp_connection *c) { memmove(cp, cp + 1, (utcp->nconnections - i - 1) * sizeof *cp); utcp->nconnections--; + buffer_exit(&c->rcvbuf); buffer_exit(&c->sndbuf); free(c); } @@ -318,6 +319,7 @@ static struct utcp_connection *allocate_connection(struct utcp *utcp, uint16_t s } if(!buffer_init(&c->rcvbuf, DEFAULT_RCVBUFSIZE, DEFAULT_MAXRCVBUFSIZE)) { + buffer_exit(&c->sndbuf); free(c); return NULL; } @@ -1416,6 +1418,7 @@ void utcp_exit(struct utcp *utcp) { for(int i = 0; i < utcp->nconnections; i++) { if(!utcp->connections[i]->reapable) debug("Warning, freeing unclosed connection %p\n", utcp->connections[i]); + buffer_exit(&utcp->connections[i]->rcvbuf); buffer_exit(&utcp->connections[i]->sndbuf); free(utcp->connections[i]); }