From bd405bc6f3104ba7c6d41c42561975d73fd81134 Mon Sep 17 00:00:00 2001 From: amelia squires Date: Wed, 11 Sep 2024 00:02:08 -0500 Subject: add res:stop --- src/net.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src/net.c') diff --git a/src/net.c b/src/net.c index b71b290..260657a 100644 --- a/src/net.c +++ b/src/net.c @@ -161,6 +161,8 @@ void* handle_client(void *_arg){ luaI_tsetcf(L, res_idx, "sendfile", l_sendfile); luaI_tsetcf(L, res_idx, "write", l_write); luaI_tsetcf(L, res_idx, "close", l_close); + luaI_tsetcf(L, res_idx, "stop", l_stop); + //values luaI_tseti(L, res_idx, "client_fd", client_fd); @@ -210,10 +212,18 @@ void* handle_client(void *_arg){ //call the function lua_call(L, 2, 0); + + //check if res:stop() was called + lua_pushstring(L, "_stop"); + lua_gettable(L, res_idx); + if(!lua_isnil(L, -1)) + goto net_end; } } } + +net_end: larray_clear(params); parray_lclear(owo); //dont free the rest @@ -289,6 +299,7 @@ int start_serv(lua_State* L, int port){ if (pthread_mutex_init(&con_mutex, NULL) != 0) p_fatal("con_mutex init failed\n"); + int count = 0; for(;;){ struct sockaddr_in client_addr; socklen_t client_addr_len = sizeof(client_addr); @@ -297,6 +308,13 @@ int start_serv(lua_State* L, int port){ if((*client_fd = accept(server_fd, (struct sockaddr*)&client_addr, &client_addr_len)) < 0) p_fatal("failed to accept\n"); + if(count >= max_con){ + //deny request + free(client_fd); + continue; + } + count++; + //open a state to call shit, should be somewhat thread safe thread_arg_struct* args = malloc(sizeof * args); -- cgit v1.2.3 From 7c757e7ca41cacd1505622dcb48e5657364aa714 Mon Sep 17 00:00:00 2001 From: amelia squires Date: Wed, 11 Sep 2024 00:02:58 -0500 Subject: stupid code --- src/net.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/net.c') diff --git a/src/net.c b/src/net.c index 260657a..66f2a3d 100644 --- a/src/net.c +++ b/src/net.c @@ -201,7 +201,7 @@ void* handle_client(void *_arg){ struct lchar* wowa = awa->cs[z]; //if request is HEAD, it is valid for GET and HEAD listeners if(strcmp(wowa->req, "all") == 0 || strcmp(wowa->req, sR->c) == 0 || - (strcmp(sR->c, "HEAD") && strcmp(wowa->req, "GET"))){ + (strcmp(sR->c, "HEAD") == 0 && strcmp(wowa->req, "GET") == 0)){ luaL_loadbuffer(L, wowa->c, wowa->len, "fun"); int func = lua_gettop(L); -- cgit v1.2.3 From fe33c0e979ebfc41c3eb9f561589f0d5d8810aaf Mon Sep 17 00:00:00 2001 From: amelia squires Date: Sun, 29 Sep 2024 02:49:05 -0500 Subject: docs n stuff --- src/net.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src/net.c') diff --git a/src/net.c b/src/net.c index 66f2a3d..88e6690 100644 --- a/src/net.c +++ b/src/net.c @@ -265,6 +265,7 @@ net_end: } int start_serv(lua_State* L, int port){ + parse_mimetypes(); //need these on windows for sockets (stupid) #ifdef _WIN32 WSADATA Data; -- cgit v1.2.3