aboutsummaryrefslogtreecommitdiff
path: root/src/server.c
diff options
context:
space:
mode:
authorFranklin Wei <git@fwei.tk>2015-12-03 21:25:33 -0500
committerFranklin Wei <git@fwei.tk>2015-12-03 21:25:33 -0500
commitb7541dfc74d2d549210aa0ad73e0536ca4818909 (patch)
treefbc2083fe99dffe5085f5861c79a284d48a72171 /src/server.c
parent1c795424fde9839ab6ebfd49ce7a84ac946be3c0 (diff)
downloadnetcosm-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.c18
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