ret_t cherokee_handler_proxy_conn_release (cherokee_handler_proxy_conn_t *pconn) { ret_t ret; cherokee_handler_proxy_poll_t *poll = pconn->poll_ref; CHEROKEE_MUTEX_LOCK (&poll->mutex); ret = poll_release (poll, pconn); CHEROKEE_MUTEX_UNLOCK (&poll->mutex); return ret; }
// delete a net net pool void net_delete(struct net_pool** pnp) { struct net_pool* np = *pnp; // the array exist or not if(np->ns) { int i = 0; for(; i < np->cap; ++i) { if(np->ns[i]->status != SOCKET_STATUS_INVALID) { socket_close(np->ns[i]->fd); } // TODO: free the buffer rbuffer_delete(&(np->ns[i]->rbuff)); wbuffer_delete(&(np->ns[i]->wbuff)); free(np->ns[i]); np->ns[i] = NULL; } free(np->ns); np->ns = NULL; } np->cap = 0; np->count = 0; if(!poll_invalid(np->eventfd)) { poll_release(np->eventfd); } np->allocid = 0; np->eventfd = 0; np->eventindex = 0; np->eventn = 0; delete np->prothandler; delete np->onlineconnidtocharid; delete np->onlinecharidtoconnid; np->serverid = -1; free(*pnp); *pnp = NULL; }