static void ts_lua_release_cache_info(ts_lua_cache_info *info, int destroy) { if (info == NULL) return; if (info->cache_action) { TSActionCancel(info->cache_action); info->cache_action = NULL; } if (info->cache_key) { TSCacheKeyDestroy(info->cache_key); info->cache_key = NULL; } if (info->cache_vc) { TSVConnClose(info->cache_vc); info->cache_vc = NULL; } TS_LUA_RELEASE_IO_HANDLE((&info->ioh)); TS_LUA_RELEASE_IO_HANDLE((&info->reserved)); if (destroy) { TSfree(info); } }
void ts_http_fetcher_release(http_fetcher *fch) { if (fch->http_vc) { TSVConnClose(fch->http_vc); fch->http_vc = NULL; } if (fch->http_parser) TSHttpParserDestroy(fch->http_parser); if (fch->hdr_loc) { TSMimeHdrDestroy(fch->hdr_bufp, fch->hdr_loc); TSHandleMLocRelease(fch->hdr_bufp, TS_NULL_MLOC, fch->hdr_loc); } if (fch->hdr_bufp) TSMBufferDestroy(fch->hdr_bufp); if (fch->hdr_reader) TSIOBufferReaderFree(fch->hdr_reader); if (fch->hdr_buffer) TSIOBufferDestroy(fch->hdr_buffer); if (fch->resp_reader) TSIOBufferReaderFree(fch->resp_reader); if (fch->resp_buffer) TSIOBufferDestroy(fch->resp_buffer); if (fch->body_reader) TSIOBufferReaderFree(fch->body_reader); if (fch->body_buffer) TSIOBufferDestroy(fch->body_buffer); if (fch->flow_reader) TSIOBufferReaderFree(fch->flow_reader); if (fch->flow_buffer) TSIOBufferDestroy(fch->flow_buffer); if (fch->req_reader) TSIOBufferReaderFree(fch->req_reader); if (fch->req_buffer) TSIOBufferDestroy(fch->req_buffer); TSContDestroy(fch->fetch_contp); TSfree(fch); fch = NULL; }
static void stats_cleanup(TSCont contp, stats_state *my_state) { if (my_state->req_buffer) { TSIOBufferDestroy(my_state->req_buffer); my_state->req_buffer = NULL; } if (my_state->resp_buffer) { TSIOBufferDestroy(my_state->resp_buffer); my_state->resp_buffer = NULL; } TSVConnClose(my_state->net_vc); TSfree(my_state); my_state = NULL; TSContDestroy(contp); }
static int transform_read_event(TSCont contp, TransformData * data, TSEvent event, void *edata) { switch (event) { case TS_EVENT_ERROR: TSVConnAbort(data->server_vc, 1); data->server_vc = NULL; data->server_vio = NULL; TSVConnAbort(data->output_vc, 1); data->output_vc = NULL; data->output_vio = NULL; break; case TS_EVENT_VCONN_EOS: TSVConnAbort(data->server_vc, 1); data->server_vc = NULL; data->server_vio = NULL; TSVConnAbort(data->output_vc, 1); data->output_vc = NULL; data->output_vio = NULL; break; case TS_EVENT_VCONN_READ_COMPLETE: TSVConnClose(data->server_vc); data->server_vc = NULL; data->server_vio = NULL; TSVIOReenable(data->output_vio); break; case TS_EVENT_VCONN_READ_READY: TSVIOReenable(data->output_vio); break; case TS_EVENT_VCONN_WRITE_COMPLETE: TSVConnShutdown(data->output_vc, 0, 1); break; case TS_EVENT_VCONN_WRITE_READY: TSVIOReenable(data->server_vio); break; default: break; } return 0; }
static int ts_lua_http_intercept_entry(TSCont contp, TSEvent event, void *edata) { switch (event) { case TS_EVENT_NET_ACCEPT_FAILED: if (edata) TSVConnClose((TSVConn)edata); break; case TS_EVENT_NET_ACCEPT: ts_lua_http_intercept_process((ts_lua_http_ctx *)TSContDataGet(contp), (TSVConn)edata); break; default: break; } TSContDestroy(contp); return 0; }