X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=jam.c;h=e772fd9d9d4217725c5db903de8b505f80bab9ab;hb=e56014729532a37e05a977b85c9e3bbd3884cc75;hp=d22ced453ff2c4769b9a558f895c54c59d799960;hpb=ca4fab9f783159edd91e2735125a2940c5723184;p=jam diff --git a/jam.c b/jam.c index d22ced4..e772fd9 100644 --- a/jam.c +++ b/jam.c @@ -1,5 +1,6 @@ #include #include +#include #include #include #include @@ -7,7 +8,25 @@ void *receiver_worker(void *arg) { int sock = (int)arg; + char buf[65536]; + printf("Received worker for socket %u\n", sock); + + for ( ;; ) { + int ret = read(sock, buf, 65536); + if (ret == 0) + break; + + // FIXME: update stats here + } + + printf("Socket %u done\n", sock); + + if (close(sock) == -1) { + perror("close()"); + exit(1); + } + pthread_exit(0); } @@ -15,6 +34,7 @@ int get_server_socket(unsigned short port) { int server_sock; struct sockaddr_in sin; + unsigned one = 1; server_sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); if (server_sock == -1) { @@ -22,6 +42,11 @@ int get_server_socket(unsigned short port) exit(1); } + if (setsockopt(server_sock, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one)) == -1) { + perror("setsocket(SO_REUSEADDR)"); + exit(1); + } + sin.sin_family = AF_INET; sin.sin_port = htons(port); sin.sin_addr.s_addr = INADDR_ANY; @@ -61,7 +86,10 @@ int main() exit(1); } - pthread_create(&thread, NULL, receiver_worker, (void *)sock); + if (pthread_create(&thread, NULL, receiver_worker, (void *)sock) == -1) { + perror("pthread_create()"); + exit(1); + } } exit(0);