commit bd3a8f5e00bccf6b25c1956d7c3456309d16ce96
parent f3b0eb539e8a0e87745dc53eabe507b98f1864b6
Author: Evgeny Grin (Karlson2k) <k2k@narod.ru>
Date: Mon, 19 Dec 2016 00:01:58 +0300
Better check for pending outgoing data for "upgraded" connections
Diffstat:
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/src/microhttpd/daemon.c b/src/microhttpd/daemon.c
@@ -685,7 +685,7 @@ urh_to_fdset (struct MHD_UpgradeResponseHandle *urh,
max_fd,
fd_setsize)) )
return MHD_NO;
- if ( (0 == (MHD_EPOLL_STATE_WRITE_READY & urh->mhd.celi)) &&
+ if ( (0 != urh->in_buffer_used) &&
(MHD_NO == urh->was_closed) &&
(MHD_INVALID_SOCKET != urh->mhd.socket) &&
(! MHD_add_to_fd_set_ (urh->mhd.socket,
@@ -701,7 +701,7 @@ urh_to_fdset (struct MHD_UpgradeResponseHandle *urh,
max_fd,
fd_setsize)) )
return MHD_NO;
- if ( (0 == (MHD_EPOLL_STATE_WRITE_READY & urh->app.celi)) &&
+ if ( (0 != urh->out_buffer_used) &&
(MHD_INVALID_SOCKET != urh->connection->socket_fd) &&
(! MHD_add_to_fd_set_ (urh->connection->socket_fd,
ws,
@@ -1339,11 +1339,11 @@ thread_main_connection_upgrade (struct MHD_Connection *con)
p[1].fd = urh->mhd.socket;
if (urh->in_buffer_used < urh->in_buffer_size)
p[0].events |= POLLIN;
- if (0 == (MHD_EPOLL_STATE_WRITE_READY & urh->app.celi))
+ if (0 != urh->out_buffer_used)
p[0].events |= POLLOUT;
if (urh->out_buffer_used < urh->out_buffer_size)
p[1].events |= POLLIN;
- if (0 == (MHD_EPOLL_STATE_WRITE_READY & urh->mhd.celi))
+ if (0 != urh->in_buffer_used)
p[1].events |= POLLOUT;
if ( (0 != (p[0].events | p[1].events)) &&
@@ -3333,13 +3333,13 @@ MHD_poll_all (struct MHD_Daemon *daemon,
p[poll_server+i].fd = urh->connection->socket_fd;
if (urh->in_buffer_used < urh->in_buffer_size)
p[poll_server+i].events |= POLLIN;
- if (0 == (MHD_EPOLL_STATE_WRITE_READY & urh->app.celi))
+ if (0 != urh->out_buffer_used)
p[poll_server+i].events |= POLLOUT;
i++;
p[poll_server+i].fd = urh->mhd.socket;
if (urh->out_buffer_used < urh->out_buffer_size)
p[poll_server+i].events |= POLLIN;
- if (0 == (MHD_EPOLL_STATE_WRITE_READY & urh->mhd.celi))
+ if (0 != urh->in_buffer_used)
p[poll_server+i].events |= POLLOUT;
i++;
}