Jelajahi Sumber

mhd_send.c: fix compiler error about MSG_MORE when MSG_MORE is undefined.

ng0 6 tahun lalu
induk
melakukan
c624cf575b
1 mengubah file dengan 55 tambahan dan 14 penghapusan
  1. 55 14
      src/microhttpd/mhd_send.c

+ 55 - 14
src/microhttpd/mhd_send.c

@@ -150,8 +150,17 @@ MHD_send_on_connection_ (struct MHD_Connection *connection,
     if (have_cork && ! want_cork)
     if (have_cork && ! want_cork)
     {
     {
       optval = 1;
       optval = 1;
-      setsockopt (connection->socket_fd, IPPROTO_TCP, TCP_CORK, &optval, sizeof (&optval)) ||
-        (setsockopt (connection->socket_fd, IPPROTO_TCP, TCP_NODELAY, &optval, sizeof (&optval)) && (connection->sk_tcp_nodelay = true));
+      setsockopt (connection->socket_fd,
+                  IPPROTO_TCP,
+                  TCP_CORK,
+                  &optval,
+                  sizeof (&optval)) ||
+        (setsockopt (connection->socket_fd,
+                     IPPROTO_TCP,
+                     TCP_NODELAY,
+                     &optval,
+                     sizeof (&optval)) &&
+         (connection->sk_tcp_nodelay = true));
       //setsockopt (cork-on); // or nodelay on // + update connection->sk_tcp_nodelay_on
       //setsockopt (cork-on); // or nodelay on // + update connection->sk_tcp_nodelay_on
       // When we have CORK, we can have NODELAY on the same system,
       // When we have CORK, we can have NODELAY on the same system,
       // at least since Linux 2.2 and both can be combined since
       // at least since Linux 2.2 and both can be combined since
@@ -169,7 +178,11 @@ MHD_send_on_connection_ (struct MHD_Connection *connection,
     if (have_cork && ! want_cork)
     if (have_cork && ! want_cork)
     {
     {
       optval = 1;
       optval = 1;
-      setsockopt (connection->socket_fd, IPPROTO_TCP, TCP_NOPUSH, &optval, sizeof (&optval));
+      setsockopt (connection->socket_fd,
+                  IPPROTO_TCP,
+                  TCP_NOPUSH,
+                  &optval,
+                  sizeof (&optval));
       // TODO: set corknopush to true here?
       // TODO: set corknopush to true here?
       // connection->sk_tcp_cork_nopush_on = true;
       // connection->sk_tcp_cork_nopush_on = true;
     }
     }
@@ -182,16 +195,27 @@ MHD_send_on_connection_ (struct MHD_Connection *connection,
     {
     {
       optval = 0;
       optval = 0;
       // setsockopt (nodelay-off);
       // setsockopt (nodelay-off);
-      setsockopt (connection->socket_fd, IPPROTO_TCP, TCP_NODELAY, &optval, sizeof (&optval));
+      setsockopt (connection->socket_fd,
+                  IPPROTO_TCP,
+                  TCP_NODELAY,
+                  &optval,
+                  sizeof (&optval));
       connection->sk_tcp_nodelay_on = false;
       connection->sk_tcp_nodelay_on = false;
     }
     }
     // ...
     // ...
   }
   }
 #endif
 #endif
 
 
-
-  ret = send (connection->socket_fd, buffer, buffer_size, want_cork ? MSG_MORE : 0);
+#if MSG_MORE
+  ret = send (connection->socket_fd,
+              buffer,
+              buffer_size,
+              (want_cork ? MSG_MORE : 0));
+#else
+  ret = send (connection->socket_fd, buffer, buffer_size, 0);
+#endif
   eno = errno;
   eno = errno;
+
 #if TCP_CORK
 #if TCP_CORK
   if (use_corknopush)
   if (use_corknopush)
   {
   {
@@ -199,8 +223,17 @@ MHD_send_on_connection_ (struct MHD_Connection *connection,
     {
     {
       optval = 0;
       optval = 0;
       //setsockopt (cork-off); // or nodelay off // + update connection->sk_tcp_nodelay_on
       //setsockopt (cork-off); // or nodelay off // + update connection->sk_tcp_nodelay_on
-      setsockopt (connection->socket_fd, IPPROTO_TCP, TCP_CORK, &optval, sizeof (&optval)) ||
-        (setsockopt (connection->socket_fd, IPPROTO_TCP, TCP_NODELAY, &optval, sizeof (&optval)) && (connection->sk_tcp_nodelay_on = false));
+      setsockopt (connection->socket_fd,
+                  IPPROTO_TCP,
+                  TCP_CORK,
+                  &optval,
+                  sizeof (&optval)) ||
+        (setsockopt (connection->socket_fd,
+                     IPPROTO_TCP,
+                     TCP_NODELAY,
+                     &optval,
+                     sizeof (&optval)) &&
+         (connection->sk_tcp_nodelay_on = false));
     }
     }
   }
   }
 #elif TCP_NOPUSH
 #elif TCP_NOPUSH
@@ -222,7 +255,8 @@ MHD_send_on_connection_ (struct MHD_Connection *connection,
                   IPPROTO_TCP,
                   IPPROTO_TCP,
                   TCP_NODELAY,
                   TCP_NODELAY,
                   &optval,
                   &optval,
-                  sizeof (&optval)) && (connection->sk_tcp_nodelay_on = true);
+                  sizeof (&optval)) &&
+        (connection->sk_tcp_nodelay_on = true);
     }
     }
     // ...
     // ...
   }
   }
@@ -269,7 +303,12 @@ MHD_send_on_connection2_ (struct MHD_Connection *connection,
     {
     {
       optval = 0;
       optval = 0;
       // setsockopt (nodelay-off);
       // setsockopt (nodelay-off);
-      setsockopt (connection->socket_fd, IPPROTO_TCP, TCP_NODELAY, &optval, sizeof (&optval)) && (connection->sk_tcp_nodelay = false);
+      setsockopt (connection->socket_fd,
+                  IPPROTO_TCP,
+                  TCP_NODELAY,
+                  &optval,
+                  sizeof (&optval)) &&
+        (connection->sk_tcp_nodelay = false);
     }
     }
     // ...
     // ...
   }
   }
@@ -288,11 +327,13 @@ MHD_send_on_connection2_ (struct MHD_Connection *connection,
     eno = errno;
     eno = errno;
     if ((ret == header_len + buffer_len) && have_cork)
     if ((ret == header_len + buffer_len) && have_cork)
     {
     {
-      optval = 0;
       // response complete, definitely uncork!
       // response complete, definitely uncork!
-      // setsockopt (cork-off);
-      setsockopt (connection->socket_fd, IPPROTO_TCP, TCP_CORK, &optval, sizeof (&optval));
-      // connection->sk_tcp_cork_nopush_on = true;
+      optval = 0;
+      setsockopt (connection->socket_fd,
+                  IPPROTO_TCP,
+                  TCP_CORK,
+                  &optval,
+                  sizeof (&optval));
     }
     }
     errno = eno;
     errno = eno;
   }
   }