void Http::event_cb(bufferevent *bev, short events, void *ctx) { if (events & BEV_EVENT_ERROR) { int err = EVUTIL_SOCKET_ERROR(); if (err) { DEBUG_LOG("Socket error: %s\n", evutil_socket_error_to_string(err)); } } if (events & (BEV_EVENT_EOF | BEV_EVENT_ERROR)) { Http* http = (Http*) ctx; if(http->bev_cgi == bev) { evbuffer *output = bufferevent_get_output(http->bev); if(evbuffer_get_length(output) == 0) { DEBUG_LOG("release http"); Http::release(&http); } else { DEBUG_LOG("release unix"); http->set_all_send(true); bufferevent_free(http->bev_cgi); http->bev_cgi = NULL; } } else if(http->bev == bev) { DEBUG_LOG("release http"); Http::release(&http); } else { DEBUG_LOG("error event_cb"); } } }