diff options
| author | Franklin Wei <git@fwei.tk> | 2015-12-03 21:25:33 -0500 |
|---|---|---|
| committer | Franklin Wei <git@fwei.tk> | 2015-12-03 21:25:33 -0500 |
| commit | b7541dfc74d2d549210aa0ad73e0536ca4818909 (patch) | |
| tree | fbc2083fe99dffe5085f5861c79a284d48a72171 /src/server.c | |
| parent | 1c795424fde9839ab6ebfd49ce7a84ac946be3c0 (diff) | |
| download | netcosm-b7541dfc74d2d549210aa0ad73e0536ca4818909.zip netcosm-b7541dfc74d2d549210aa0ad73e0536ca4818909.tar.gz netcosm-b7541dfc74d2d549210aa0ad73e0536ca4818909.tar.bz2 netcosm-b7541dfc74d2d549210aa0ad73e0536ca4818909.tar.xz | |
better auth
Diffstat (limited to 'src/server.c')
| -rw-r--r-- | src/server.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/src/server.c b/src/server.c index e727d19..6089317 100644 --- a/src/server.c +++ b/src/server.c @@ -18,7 +18,7 @@ #include "netcosm.h" -#define PORT 1234 +#define PORT 1333 #define BACKLOG 16 void __attribute__((noreturn)) error(const char *fmt, ...) @@ -33,6 +33,8 @@ void __attribute__((noreturn)) error(const char *fmt, ...) exit(EXIT_FAILURE); } +int num_clients = 0; + void sigchld_handler(int s) { // waitpid() might overwrite errno, so we save and restore it: @@ -41,6 +43,8 @@ void sigchld_handler(int s) while(waitpid(-1, NULL, WNOHANG) > 0); errno = saved_errno; + + --num_clients; } int port; @@ -68,6 +72,7 @@ void sigint_handler(int sig) int main(int argc, char *argv[]) { port = PORT; + srand(time(0)); int sock = socket(AF_INET, SOCK_STREAM, 0); if(sock<0) @@ -104,8 +109,6 @@ int main(int argc, char *argv[]) signal(SIGINT, sigint_handler); - int num_clients = 0; - if(access(USERFILE, F_OK) < 0) first_run_setup(); @@ -114,26 +117,25 @@ int main(int argc, char *argv[]) while(1) { struct sockaddr_in client; - socklen_t client_len; + socklen_t client_len = sizeof(client); int new_sock = accept(sock, (struct sockaddr*) &client, &client_len); if(new_sock < 0) error("accept"); + ++num_clients; + pid_t pid = fork(); if(pid < 0) error("fork"); + if(!pid) { close(sock); server_socket = new_sock; - ++num_clients; - handle_client(new_sock, &client, num_clients); - --num_clients; - exit(0); } else |