struct sockaddr_in addr;
socklen_t addr_len = sizeof(addr);
pthread_t thread;
+ pthread_attr_t attr;
int sock = accept(server_sock, (struct sockaddr *)&addr, &addr_len);
if (sock == -1) {
exit(1);
}
- if (pthread_create(&thread, NULL, receiver_worker, (void *)sock) != 0) {
+ // FIXME: these do not really set errno
+ if (pthread_attr_init(&attr) != 0) {
+ perror("pthread_attr_init()");
+ exit(1);
+ }
+
+ if (pthread_attr_setstacksize(&attr, PTHREAD_STACK_MIN + 65536 + 0x4000) != 0) {
+ perror("pthread_attr_setstacksize");
+ exit(1);
+ }
+
+ if (pthread_create(&thread, &attr, receiver_worker, (void *)sock) != 0) {
perror("pthread_create()");
exit(1);
}