|
@@ -4232,12 +4232,16 @@ spawn_process(struct mg_connection *conn,
|
|
|
|
|
|
|
|
|
static int
|
|
|
-set_non_blocking_mode(SOCKET sock)
|
|
|
+set_blocking_mode(SOCKET sock, int blocking)
|
|
|
{
|
|
|
int flags;
|
|
|
|
|
|
flags = fcntl(sock, F_GETFL, 0);
|
|
|
- (void)fcntl(sock, F_SETFL, flags | O_NONBLOCK);
|
|
|
+ if (blocking) {
|
|
|
+ (void)fcntl(sock, F_SETFL, flags | O_NONBLOCK);
|
|
|
+ } else {
|
|
|
+ (void)fcntl(sock, F_SETFL, flags & (~(int)(O_NONBLOCK)));
|
|
|
+ }
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
@@ -12449,8 +12453,8 @@ close_socket_gracefully(struct mg_connection *conn)
|
|
|
}
|
|
|
|
|
|
/* http://msdn.microsoft.com/en-us/library/ms739165(v=vs.85).aspx:
|
|
|
- * "Note that enabling a nonzero timeout on a nonblocking socket
|
|
|
- * is not recommended.", so set it to blocking now */
|
|
|
+ * "Note that enabling a nonzero timeout on a nonblocking socket
|
|
|
+ * is not recommended.", so set it to blocking now */
|
|
|
set_blocking_mode(conn->client.sock, 1);
|
|
|
|
|
|
/* Send FIN to the client */
|