diff src/c/http.c @ 1948:6b80900ddc66

HTTP: continue after accept() failure
author Adam Chlipala <adam@chlipala.net>
date Mon, 30 Dec 2013 11:01:42 -0500
parents 8b1692660dac
children c93fbd139732
line wrap: on
line diff
--- a/src/c/http.c	Sun Dec 29 13:18:50 2013 -0500
+++ b/src/c/http.c	Mon Dec 30 11:01:42 2013 -0500
@@ -430,19 +430,19 @@
     int new_fd = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size);
 
     if (new_fd < 0) {
-      fprintf(stderr, "Socket accept failed\n");
-      return 1;
+      if (!quiet)
+        fprintf(stderr, "Socket accept failed\n");
+    } else {
+      if (!quiet)
+        printf("Accepted connection.\n");
+
+      if (keepalive) {
+        int flag = 1; 
+        setsockopt(new_fd, IPPROTO_TCP, TCP_NODELAY, (char *) &flag, sizeof(int));
+      }
+
+      uw_enqueue(new_fd);
     }
-
-    if (!quiet)
-      printf("Accepted connection.\n");
-
-    if (keepalive) {
-      int flag = 1; 
-      setsockopt(new_fd, IPPROTO_TCP, TCP_NODELAY, (char *) &flag, sizeof(int));
-    }
-
-    uw_enqueue(new_fd);
   }
 }