From ce5051ab905a1751effebb8658caf9ed15b2be62 Mon Sep 17 00:00:00 2001 From: ame Date: Mon, 13 May 2024 23:43:46 -0500 Subject: setsockopt before bind --- src/net.c | 7 ++++--- tests/h.lua | 18 +++++++++++------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/net.c b/src/net.c index 2898f0e..486f44a 100644 --- a/src/net.c +++ b/src/net.c @@ -979,6 +979,10 @@ int start_serv(lua_State* L, int port){ server_addr.sin_addr.s_addr = INADDR_ANY; server_addr.sin_port = htons(port); + + if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR, (const char*)&(int){1}, sizeof(int)) < 0) + p_fatal("SO_REUSEADDR refused\n"); + //bind to port if(bind(server_fd, (struct sockaddr*)&server_addr, sizeof(server_addr)) < 0) p_fatal("failed to bind to port\n"); @@ -989,9 +993,6 @@ int start_serv(lua_State* L, int port){ if (pthread_mutex_init(&mutex, NULL) != 0) p_fatal("mutex init failed\n"); - if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR, (const char*)&(int){1}, sizeof(int)) < 0) - p_fatal("SO_REUSEADDR refused\n"); - for(;;){ struct sockaddr_in client_addr; socklen_t client_addr_len = sizeof(client_addr); diff --git a/tests/h.lua b/tests/h.lua index c96e98e..ca946fc 100644 --- a/tests/h.lua +++ b/tests/h.lua @@ -1,6 +1,6 @@ require "llib" -llib.thread.lock(1) +--llib.thread.lock(1) --llib.thread.lock(2) --llib.thread.unlock(2) @@ -8,21 +8,25 @@ local thread_a = llib.thread.async(function (res) --os.execute("sleep 1") --print((_G.ll + "hi"):final()) print("waiting..") - llib.thread.lock(1) + --llib.thread.lock(1) + _G.test = 5 print("signal!") - res() + res(llib.thread.async(function (res) + print(test) + res(test) + end)) print("after") end) -os.execute("sleep 1") -print("unlock") -llib.thread.unlock(1) +--os.execute("sleep 1") +--print("unlock") +--llib.thread.unlock(1) awa = thread_a:await() +print(awa:await()) --print((awa + "hi"):final()) -os.execute("sleep 1") thread_a:clean() print("clean exit") -- cgit v1.2.3