try fixing multi-threading bug and memory leak

This commit is contained in:
William Bell committed 2024-02-24 19:15:39 +00:00
1 parent 3468ea57ed
commit 7f7d84ca49
3 files changed
+6 -7

No files matched your search

+1 -1
View File
@@ -123,7 +123,7 @@ let handle(routes, conn, onErr) = do
let route = routes[i]
if (route.type == "middleware") do
toTry.append(route)
else if (request.method in route.methods) do
else if (route.methods == true || request.method in route.methods) do
let comparison = pathCompare.compare(route.path, request.path)
if (comparison.match) do
route.params = comparison.params
+1 -4
View File
@@ -27,10 +27,7 @@ let server() = do
throwError("Server already running")
let starter() = do
Socket = socket.server("tcp", class.port)
for (i from 0 to class.numThreads) do
let t = thread(()=listener.listener(Socket, routes, class.onErr))
threads.append(t)
t.start()
listener.listener(Socket, routes, class.onErr)
class.callback()
let t = thread(starter)
t.start()
+4 -2
View File
@@ -1,5 +1,7 @@
import "handleRequest" as handleRequest
let listener(Socket, routes, onErr) = do
while (not Socket.isClosed()) try thread(()=handleRequest.handle(routes, Socket.accept(), onErr)).start()
catch (e) if (onErr) onErr(e)
while (not Socket.isClosed()) try do
let accept = Socket.accept()
thread(()=handleRequest.handle(routes, accept, onErr)).start()
catch (e) if (onErr) onErr(e)