static void http_session_ondestroy(void* param) { struct http_session_t *session; session = (struct http_session_t *)param; session->transport = NULL; if (session->parser) { http_parser_destroy(session->parser); session->parser = NULL; } if (session->__vec) { free(session->__vec); session->__vec = NULL; session->vec_capacity = 0; } if (session->header != (char*)(session + 1)) { assert(session->header_capacity > 2 * 1024); free(session->header); session->header = NULL; session->header_size = 0; session->header_capacity = 0; } #if defined(DEBUG) || defined(_DEBUG) memset(session, 0xCC, sizeof(*session)); #endif free(session); }
static void http_context_clean(struct transport_client_context_s *ctx) { if (!ctx) return; if (ctx->parser) http_parser_destroy(ctx->parser); if (ctx->request) http_request_clean(ctx->request); g_free(ctx); }