Project homepage Mailing List  Warmcat.com  API Docs  Github Mirror 
{"schema":"libjg2-1", "vpath":"/git/", "avatar":"/git/avatar/", "alang":"", "gen_ut":1750824111, "reponame":"libwebsockets", "desc":"libwebsockets lightweight C networking library", "owner": { "name": "Andy Green", "email": "andy@warmcat.com", "md5": "c50933ca2aa61e0fe2c43d46bb6b59cb" },"url":"https://libwebsockets.org/repo/libwebsockets", "f":3, "items": [ {"schema":"libjg2-1", "cid":"b8abc4550563c38538f3419474adae8a", "commit": {"type":"commit", "time": 1516152217, "time_ofs": 480, "oid_tree": { "oid": "86f89a22bcbf4bb6bdc6cd0065f93e905cbd2435", "alias": []}, "oid":{ "oid": "93f904f601bb21dbcc8e6badd05970824990285f", "alias": []}, "msg": "libevent: fix memory leak", "sig_commit": { "git_time": { "time": 1516152217, "offset": 480 }, "name": "Andy Green", "email": "andy@warmcat.com", "md5": "c50933ca2aa61e0fe2c43d46bb6b59cb" }, "sig_author": { "git_time": { "time": 1516151145, "offset": 60 }, "name": "Sungtae Kim", "email": "pchero21@gmail.com", "md5": "e9830f8fa44624cdd8d73d6ab1c60a5b" }}, "body": "libevent: fix memory leak\n\n- Added event free function for accept." , "diff": "diff --git a/lib/context.c b/lib/context.c\nindex 28db7aa..67636c3 100644\n--- a/lib/context.c\n+++ b/lib/context.c\n@@ -958,6 +958,16 @@ lws_create_event_pipes(struct lws_context *context)\n \treturn 0;\n }\n \n+static void\n+lws_destroy_event_pipe(struct lws *wsi)\n+{\n+\tlws_plat_pipe_close(wsi);\n+\tremove_wsi_socket_from_fds(wsi);\n+\tlws_libevent_destroy(wsi);\n+\twsi-\u003econtext-\u003ecount_wsi_allocated--;\n+\tlws_free(wsi);\n+}\n+\n LWS_VISIBLE struct lws_context *\n lws_create_context(struct lws_context_creation_info *info)\n {\n@@ -1682,12 +1692,9 @@ lws_context_destroy(struct lws_context *context)\n \t\t\tif (!wsi)\n \t\t\t\tcontinue;\n \n-\t\t\tif (wsi-\u003eevent_pipe) {\n-\t\t\t\tlws_plat_pipe_close(wsi);\n-\t\t\t\tremove_wsi_socket_from_fds(wsi);\n-\t\t\t\tlws_free(wsi);\n-\t\t\t\tcontext-\u003ecount_wsi_allocated--;\n-\t\t\t} else\n+\t\t\tif (wsi-\u003eevent_pipe)\n+\t\t\t\tlws_destroy_event_pipe(wsi);\n+\t\t\telse\n \t\t\t\tlws_close_free_wsi(wsi,\n \t\t\t\t\tLWS_CLOSE_STATUS_NOSTATUS_CONTEXT_DESTROY\n \t\t\t\t\t/* no protocol close */);\ndiff --git a/lib/event-libs/libevent.c b/lib/event-libs/libevent.c\nindex ad12ac5..61af5d3 100644\n--- a/lib/event-libs/libevent.c\n+++ b/lib/event-libs/libevent.c\n@@ -186,6 +186,19 @@ lws_libevent_accept(struct lws *new_wsi, lws_sock_file_fd_type desc)\n }\n \n LWS_VISIBLE void\n+lws_libevent_destroy(struct lws *wsi)\n+{\n+\tif (!wsi)\n+\t\treturn;\n+\n+\tif(wsi-\u003ew_read.event_watcher)\n+\t\tevent_free(wsi-\u003ew_read.event_watcher);\n+\n+\tif(wsi-\u003ew_write.event_watcher)\n+\t\tevent_free(wsi-\u003ew_write.event_watcher);\n+}\n+\n+LWS_VISIBLE void\n lws_libevent_io(struct lws *wsi, int flags)\n {\n \tstruct lws_context *context \u003d lws_get_context(wsi);\ndiff --git a/lib/libwebsockets.c b/lib/libwebsockets.c\nindex 32157ef..bba1182 100644\n--- a/lib/libwebsockets.c\n+++ b/lib/libwebsockets.c\n@@ -124,6 +124,8 @@ lws_free_wsi(struct lws *wsi)\n \tlws_ssl_remove_wsi_from_buffered_list(wsi);\n \tlws_remove_from_timeout_list(wsi);\n \n+\tlws_libevent_destroy(wsi);\n+\n \twsi-\u003econtext-\u003ecount_wsi_allocated--;\n \tlwsl_debug(\u0022%s: %p, remaining wsi %d\u005cn\u0022, __func__, wsi,\n \t\t\twsi-\u003econtext-\u003ecount_wsi_allocated);\ndiff --git a/lib/private-libwebsockets.h b/lib/private-libwebsockets.h\nindex 04b312c..a3c38e0 100644\n--- a/lib/private-libwebsockets.h\n+++ b/lib/private-libwebsockets.h\n@@ -1275,6 +1275,8 @@ LWS_EXTERN void lws_feature_status_libuv(struct lws_context_creation_info *info)\n #if defined(LWS_WITH_LIBEVENT)\n LWS_EXTERN void\n lws_libevent_accept(struct lws *new_wsi, lws_sock_file_fd_type desc);\n+LWS_VISIBLE void\n+lws_libevent_destroy(struct lws *wsi);\n LWS_EXTERN void\n lws_libevent_io(struct lws *wsi, int flags);\n LWS_EXTERN int\n@@ -1287,6 +1289,7 @@ lws_libevent_run(const struct lws_context *context, int tsi);\n LWS_EXTERN void lws_feature_status_libevent(struct lws_context_creation_info *info);\n #else\n #define lws_libevent_accept(_a, _b) ((void) 0)\n+#define lws_libevent_destroy(_a) ((void) 0)\n #define lws_libevent_io(_a, _b) ((void) 0)\n #define lws_libevent_init_fd_table(_a) (0)\n #define lws_libevent_run(_a, _b) ((void) 0)\n","s":{"c":1750805061,"u": 7533}} ],"g": 905,"chitpc": 0,"ehitpc": 0,"indexed":0 , "ab": 0, "si": 0, "db":0, "di":0, "sat":0, "lfc": "7d0a"}