From ed7222e513b9d2719ac7572f15317f35dc86c56a Mon Sep 17 00:00:00 2001 From: Alex Hultman Date: Sun, 30 Dec 2018 18:02:57 +0100 Subject: [PATCH] Fix last obvious leak --- misc/main.cpp | 2 ++ src/HttpResponse.h | 45 ------------------------------------------ src/HttpResponseData.h | 2 +- src/WebSocketContext.h | 3 +++ src/WebSocketData.h | 8 ++++++++ 5 files changed, 14 insertions(+), 46 deletions(-) diff --git a/misc/main.cpp b/misc/main.cpp index be96d45..3e2ea3d 100644 --- a/misc/main.cpp +++ b/misc/main.cpp @@ -69,6 +69,8 @@ int main(int argc, char **argv) { uWS::Loop::defaultLoop()->free(); + std::cout << "Everything fine, falling through" << std::endl; + // return 0; // AsyncFileStreamer *asyncFileStreamer = new AsyncFileStreamer("/home/alexhultman/v0.15/public"); diff --git a/src/HttpResponse.h b/src/HttpResponse.h index b6b18e4..1bdbb9c 100644 --- a/src/HttpResponse.h +++ b/src/HttpResponse.h @@ -136,51 +136,6 @@ private: } public: - - // this should probably not be public - bool upgradeToWebSocket(void *newSocket) { - - HttpResponseData *httpResponseData = getHttpResponseData(); - - - // this flag is not really needed to keep state of, could be per http content state - httpResponseData->state |= HttpResponseData::HTTP_UPGRADED_TO_WEBSOCKET; - - // also set pointer to the websocketcontext? - - // you can just check if the context of the socket changed? buy youi don't know the socket ptr! - - HttpContextData *httpContextData = (HttpContextData *) Super::static_dispatch(us_ssl_socket_context_ext, us_socket_context_ext)( - - Super::static_dispatch(us_ssl_socket_get_context, us_socket_get_context)((typename Super::SOCKET_TYPE *) this) - - ); - - httpContextData->upgradedWebSocket = newSocket; - - // I jhave no idea what this does - return true; - - - /*SOCKET_CONTEXT_TYPE *getSocketContext() { - return (SOCKET_CONTEXT_TYPE *) this; - } - - static SOCKET_CONTEXT_TYPE *getSocketContext(SOCKET_TYPE *s) { - return (SOCKET_CONTEXT_TYPE *) static_dispatch(us_ssl_socket_get_context, us_socket_get_context)(s); - } - - HttpContextData *getSocketContextData() { - return (HttpContextData *) static_dispatch(us_ssl_socket_context_ext, us_socket_context_ext)(getSocketContext()); - } - - static HttpContextData *getSocketContextDataS(SOCKET_TYPE *s) { - return (HttpContextData *) static_dispatch(us_ssl_socket_context_ext, us_socket_context_ext)(getSocketContext(s)); - }*/ - - //return (HttpContextData *) static_dispatch(us_ssl_socket_context_ext, us_socket_context_ext)(getSocketContext(s)); - } - /* Immediately terminate this Http response */ using Super::close; diff --git a/src/HttpResponseData.h b/src/HttpResponseData.h index 026c8d0..a9f8b12 100644 --- a/src/HttpResponseData.h +++ b/src/HttpResponseData.h @@ -35,7 +35,7 @@ private: HTTP_STATUS_CALLED = 1, // used HTTP_WRITE_CALLED = 2, // used HTTP_END_CALLED = 4, // used - HTTP_UPGRADED_TO_WEBSOCKET = 8, // used + HTTP_UPGRADED_TO_WEBSOCKET = 8, // not used HTTP_ENDED_STREAM_OUT = 16 // not used }; diff --git a/src/WebSocketContext.h b/src/WebSocketContext.h index 7b61ebb..76337db 100644 --- a/src/WebSocketContext.h +++ b/src/WebSocketContext.h @@ -238,6 +238,9 @@ private: //std::cout << "close!" << std::endl; + WebSocketData *webSocketData = (WebSocketData *) (static_dispatch(us_ssl_socket_ext, us_socket_ext)(s)); + webSocketData->~WebSocketData(); + return s; diff --git a/src/WebSocketData.h b/src/WebSocketData.h index 1eb08cd..5f480ed 100644 --- a/src/WebSocketData.h +++ b/src/WebSocketData.h @@ -50,6 +50,14 @@ public: deflationStream = new DeflationStream; } } + + ~WebSocketData() { + std::cout << "destruting webocketdata" << std::endl; + + if (deflationStream) { + delete deflationStream; + } + } }; }