瀏覽代碼

httpserver: fix memory leak

There was a memory leak related to not dropping all references to
fifosock's ssend.
Jedrzej Potoniec 3 年之前
父節點
當前提交
9e08be7b28
共有 1 個文件被更改,包括 9 次插入6 次删除
  1. 9 6
      lua_modules/http/httpserver.lua

+ 9 - 6
lua_modules/http/httpserver.lua

@@ -86,19 +86,22 @@ do
       local buf = ""
       local buf = ""
       local method, url
       local method, url
 
 
+      local ondisconnect = function(connection)
+        connection:on("receive", nil)
+        connection:on("disconnection", nil)
+        connection:on("sent", nil)
+        collectgarbage("collect")
+      end
+
       local cfini = function()
       local cfini = function()
-        conn:on("receive", nil)
-        conn:on("disconnection", nil)
         csend(function()
         csend(function()
           conn:on("sent", nil)
           conn:on("sent", nil)
           conn:close()
           conn:close()
+          ondisconnect(conn)
         end)
         end)
       end
       end
 
 
-      local ondisconnect = function(connection)
-        connection:on("sent", nil)
-        collectgarbage("collect")
-      end
+
       -- header parser
       -- header parser
       local cnt_len = 0
       local cnt_len = 0