libmicrohttpd

HTTP/1.x server C library (MHD 1.x, stable)
Log | Files | Refs | Submodules | README | LICENSE

commit 843b844d64578aa20749658c656d93ea2e17710c
parent 2a08acaa218a1e887f60af3019db33f9ec68cbe2
Author: ng0 <ng0@n0.is>
Date:   Thu, 18 Jul 2019 16:18:30 +0000

mhd_send.c: Use daemon from connection struct.

Diffstat:
Msrc/microhttpd/mhd_send.c | 83+++++++++++++++++++++++++++++++++++++++++--------------------------------------
1 file changed, 43 insertions(+), 40 deletions(-)

diff --git a/src/microhttpd/mhd_send.c b/src/microhttpd/mhd_send.c @@ -90,13 +90,13 @@ MHD_send_on_connection_ (struct MHD_Connection *connection, const MHD_SCKT_OPT_BOOL_ on_val = 1; const int err = MHD_socket_get_error_ (); - // error handling from send_param_adapter() + /* error handling from send_param_adapter() */ if ((MHD_INVALID_SOCKET == s) || (MHD_CONNECTION_CLOSED == connection->state)) { return MHD_ERR_NOTCONN_; } - // from send_param_adapter() + /* from send_param_adapter() */ if (buffer_size > MHD_SCKT_SEND_MAX_SIZE_) buffer_size = MHD_SCKT_SEND_MAX_SIZE_; /* return value limit */ @@ -142,17 +142,18 @@ MHD_send_on_connection_ (struct MHD_Connection *connection, { if (have_cork && ! want_cork) { - setsockopt (connection->socket_fd, - IPPROTO_TCP, - TCP_CORK, - (const void *) &on_val, - sizeof (on_val)) || - (setsockopt (connection->socket_fd, - IPPROTO_TCP, - TCP_NODELAY, - (const void *) &on_val, - sizeof (on_val)) && - (connection->sk_tcp_nodelay = true)); + if (0 == setsockopt (connection->socket_fd, + IPPROTO_TCP, + TCP_CORK, + (const void *) &on_val, + sizeof (on_val))) + else if (0 == setsockopt (connection->socket_fd, + IPPROTO_TCP, + TCP_NODELAY, + (const void *) &on_val, + sizeof (on_val))) { + 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 @@ -215,12 +216,11 @@ MHD_send_on_connection_ (struct MHD_Connection *connection, */ /* for TLS*/ - /* - if (0 != (daemon->options & MHD_USE_TLS)) - TLS; + + if (0 != (connection->daemon->options & MHD_USE_TLS)) + /* old TLS code here */; else no-TLS; - */ // shouldn't we return 0 or -1? Why re-use the _ERR_ functions? // error handling from send_param_adapter(): @@ -256,17 +256,18 @@ MHD_send_on_connection_ (struct MHD_Connection *connection, if (! have_cork && want_cork && ! have_more) { //setsockopt (cork-off); // or nodelay off // + update connection->sk_tcp_nodelay_on - setsockopt (connection->socket_fd, - IPPROTO_TCP, - TCP_CORK, - (const void *) &off_val, - sizeof (off_val)) || - (setsockopt (connection->socket_fd, - IPPROTO_TCP, - TCP_NODELAY, - (const void *) &off_val, - sizeof (off_val)) && - (connection->sk_tcp_nodelay_on = false)); + if (0 == setsockopt (connection->socket_fd, + IPPROTO_TCP, + TCP_CORK, + (const void *) &off_val, + sizeof (off_val))) + else if (0 == setsockopt (connection->socket_fd, + IPPROTO_TCP, + TCP_NODELAY, + (const void *) &off_val, + sizeof (off_val))) { + connection->sk_tcp_nodelay_on = false; + } } } #elif TCP_NOPUSH @@ -283,12 +284,13 @@ MHD_send_on_connection_ (struct MHD_Connection *connection, if (have_cork && ! want_cork) { // setsockopt (nodelay - on); - setsockopt (connection->socket_fd, - IPPROTO_TCP, - TCP_NODELAY, - (const void *) &on_val, - sizeof (on_val)) && - (connection->sk_tcp_nodelay_on = true); + if (0 == setsockopt (connection->socket_fd, + IPPROTO_TCP, + TCP_NODELAY, + (const void *) &on_val, + sizeof (on_val))) { + connection->sk_tcp_nodelay_on = true; + } } // ... } @@ -337,12 +339,13 @@ MHD_send_on_connection2_ (struct MHD_Connection *connection, if (! have_cork && want_cork) { // setsockopt (nodelay-off); - setsockopt (connection->socket_fd, - IPPROTO_TCP, - TCP_NODELAY, - (const void *) &off_val, - sizeof (off_val)) && - (connection->sk_tcp_nodelay = false); + if (0 == setsockopt (connection->socket_fd, + IPPROTO_TCP, + TCP_NODELAY, + (const void *) &off_val, + sizeof (off_val))) { + connection->sk_tcp_nodelay = false; + } } // ... }