commit beae0da3aedd2c8eb40aef3882f8b34de22b17b6
parent 56676ae76dad5d8cb4f600b420f227d5efe0cce8
Author: ng0 <ng0@n0.is>
Date: Mon, 24 Jun 2019 10:40:47 +0000
mhd_send.c: fix compiler error about MSG_MORE when MSG_MORE is undefined.
Diffstat:
1 file changed, 55 insertions(+), 14 deletions(-)
diff --git a/src/microhttpd/mhd_send.c b/src/microhttpd/mhd_send.c
@@ -150,8 +150,17 @@ MHD_send_on_connection_ (struct MHD_Connection *connection,
if (have_cork && ! want_cork)
{
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
// When we have CORK, we can have NODELAY on the same system,
// 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)
{
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?
// connection->sk_tcp_cork_nopush_on = true;
}
@@ -182,16 +195,27 @@ MHD_send_on_connection_ (struct MHD_Connection *connection,
{
optval = 0;
// 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;
}
// ...
}
#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;
+
#if TCP_CORK
if (use_corknopush)
{
@@ -199,8 +223,17 @@ MHD_send_on_connection_ (struct MHD_Connection *connection,
{
optval = 0;
//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
@@ -222,7 +255,8 @@ MHD_send_on_connection_ (struct MHD_Connection *connection,
IPPROTO_TCP,
TCP_NODELAY,
&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;
// 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;
if ((ret == header_len + buffer_len) && have_cork)
{
- optval = 0;
// 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;
}