aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/net.c6
-rw-r--r--src/net.h2
-rw-r--r--src/net/lua.c8
-rw-r--r--src/net/util.c2
4 files changed, 7 insertions, 11 deletions
diff --git a/src/net.c b/src/net.c
index 7f94047..7cc3b12 100644
--- a/src/net.c
+++ b/src/net.c
@@ -5,7 +5,7 @@
#define max_uri_size 2048
-volatile size_t threads = 0;
+_Atomic size_t threads = 0;
void* handle_client(void *_arg){
//printf("--\n");
//pthread_mutex_lock(&mutex);
@@ -313,7 +313,6 @@ 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);
@@ -322,7 +321,7 @@ 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){
+ if(threads >= max_con){
//deny request
net_error(*client_fd, 503);
close(*client_fd);
@@ -330,7 +329,6 @@ int start_serv(lua_State* L, int port){
continue;
}
- count++;
//open a state to call shit, should be somewhat thread safe
thread_arg_struct* args = malloc(sizeof * args);
diff --git a/src/net.h b/src/net.h
index d9c8b4c..d2b7435 100644
--- a/src/net.h
+++ b/src/net.h
@@ -35,8 +35,6 @@ int start_serv(lua_State* L, int port);
//
static char* http_codes[600] = {0};
-extern volatile size_t threads;
-
static const luaL_Reg net_function_list [] = {
{"listen",l_listen},
diff --git a/src/net/lua.c b/src/net/lua.c
index ea03644..6004343 100644
--- a/src/net/lua.c
+++ b/src/net/lua.c
@@ -42,7 +42,7 @@ int l_write(lua_State* L){
resp = str_init(content);
}
- send(client_fd, resp->c, resp->len, 0);
+ send(client_fd, resp->c, resp->len, MSG_NOSIGNAL);
str_free(resp);
return 0;
@@ -75,7 +75,7 @@ int l_send(lua_State* L){
} else
i_write_header(L, header, &resp, content, len);
- int a = send(client_fd, resp->c, resp->len, 0);
+ int a = send(client_fd, resp->c, resp->len, MSG_NOSIGNAL);
//
lua_pushstring(L, "client_fd");
@@ -257,12 +257,12 @@ int l_sendfile(lua_State* L){
str* r;
i_write_header(L, header, &r, "", 0);
- send(client_fd, r->c, r->len, 0);
+ send(client_fd, r->c, r->len, MSG_NOSIGNAL);
str_free(r);
for(size_t i = 0; i < sz; i += bsize){
fread(buffer, sizeof * buffer, bsize, fp);
- if(send(client_fd, buffer, bsize > sz - i ? sz - i : bsize, 0) == -1)
+ if(send(client_fd, buffer, bsize > sz - i ? sz - i : bsize, MSG_NOSIGNAL) == -1)
break;
}
diff --git a/src/net/util.c b/src/net/util.c
index 150b8f9..c9f359e 100644
--- a/src/net/util.c
+++ b/src/net/util.c
@@ -428,6 +428,6 @@ void parse_mimetypes(){
int net_error(int fd, int code){
char out[512] = {0};
sprintf(out, "HTTP/1.1 %i %s\n\n", code, http_code(code));
- send(fd, out, strlen(out), 0);
+ send(fd, out, strlen(out), MSG_NOSIGNAL);
return 0;
}