diff --git a/platform/CMakeLists.txt b/platform/CMakeLists.txt index a446e2e..5dfec46 100644 --- a/platform/CMakeLists.txt +++ b/platform/CMakeLists.txt @@ -20,7 +20,6 @@ target_link_libraries(tfe pthread dl target_link_libraries(tfe -Wl,--whole-archive http -Wl,--no-whole-archive) target_link_libraries(tfe -Wl,--whole-archive pangu-http -Wl,--no-whole-archive) - #target_link_libraries(tfe -Wl,--whole-archive decrypt-mirroring -Wl,--no-whole-archive) install(TARGETS tfe RUNTIME DESTINATION ./) diff --git a/plugin/business/decrypt-mirroring/src/decrypt_mirror_plugin.cpp b/plugin/business/decrypt-mirroring/src/decrypt_mirror_plugin.cpp index 6fb33a8..afe5743 100644 --- a/plugin/business/decrypt-mirroring/src/decrypt_mirror_plugin.cpp +++ b/plugin/business/decrypt-mirroring/src/decrypt_mirror_plugin.cpp @@ -35,10 +35,12 @@ void decrypt_mirror_on_close_cb(const struct tfe_stream * stream, unsigned int t mirror_stream_close(pme, thread_id); return; } + void decrypt_mirror_deinit(struct tfe_proxy * proxy) { return; } + struct tfe_plugin decrypt_mirror_spec={ .symbol=NULL, .type = TFE_PLUGIN_TYPE_BUSINESS, diff --git a/plugin/protocol/http/src/http_convert.cpp b/plugin/protocol/http/src/http_convert.cpp index b2f6763..588e119 100644 --- a/plugin/protocol/http/src/http_convert.cpp +++ b/plugin/protocol/http/src/http_convert.cpp @@ -27,6 +27,7 @@ void hf_content_uncompress_destroy(struct hf_content_uncompress * cv_object) { (void) inflateEnd(cv_object->z_stream_ptr); free(cv_object->z_stream_ptr); + free(cv_object->chunk); cv_object->z_stream_ptr = NULL; free(cv_object); } @@ -196,5 +197,8 @@ int hf_content_compress_write(struct hf_content_compress * cv_object, void hf_content_compress_destroy(hf_content_compress * cv_object) { - return; + (void) deflateEnd(cv_object->z_stream_ptr); + free(cv_object->z_stream_ptr); + cv_object->z_stream_ptr = NULL; + free(cv_object); } diff --git a/plugin/protocol/http/src/http_half.cpp b/plugin/protocol/http/src/http_half.cpp index 7a2d6a3..7004ccd 100644 --- a/plugin/protocol/http/src/http_half.cpp +++ b/plugin/protocol/http/src/http_half.cpp @@ -693,6 +693,18 @@ void hf_private_destory(struct http_half_private * hf_private) if (hf_private->parse_object != NULL) { free(hf_private->parse_object); + hf_private->parse_object = NULL; + } + + struct http_header_private * header_iter = NULL; + struct http_header_private * header_titer = NULL; + + TAILQ_FOREACH_SAFE(header_iter, &hf_private->header_list, next, header_titer) + { + TAILQ_REMOVE(&hf_private->header_list, header_iter, next); + free(header_iter->field); + free(header_iter->value); + free(header_iter); } if (hf_private->event_cb_user_deleter != NULL) @@ -700,6 +712,54 @@ void hf_private_destory(struct http_half_private * hf_private) hf_private->event_cb_user_deleter(hf_private->event_cb_user); } + if (hf_private->evbuf_uri != NULL) + { + evbuffer_free(hf_private->evbuf_uri); + hf_private->evbuf_uri = NULL; + } + + if (hf_private->url_storage) + { + free(hf_private->url_storage); + hf_private->url_storage = NULL; + } + + if (hf_private->cv_uncompress_object) + { + hf_content_uncompress_destroy(hf_private->cv_uncompress_object); + hf_private->cv_uncompress_object = NULL; + } + + if (hf_private->cv_compress_object) + { + hf_content_compress_destroy(hf_private->cv_compress_object); + hf_private->cv_compress_object = NULL; + } + + if (hf_private->evbuf_header_field) + { + evbuffer_free(hf_private->evbuf_header_field); + hf_private->evbuf_header_field = NULL; + } + + if (hf_private->evbuf_header_value) + { + evbuffer_free(hf_private->evbuf_header_value); + hf_private->evbuf_header_value = NULL; + } + + if (hf_private->evbuf_body) + { + evbuffer_free(hf_private->evbuf_body); + hf_private->evbuf_body = NULL; + } + + if (hf_private->evbuf_raw) + { + evbuffer_free(hf_private->evbuf_raw); + hf_private->evbuf_raw = NULL; + } + free(hf_private); }