[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] socket: do not enable POLLOUT for empty out buffer
[Thread Prev] | [Thread Next]
- Subject: [PATCH] socket: do not enable POLLOUT for empty out buffer
- From: Nikolay <nitro@xxxxxxxxxxx>
- Reply-to: libssh@xxxxxxxxxx
- Date: Wed, 2 Aug 2017 16:12:32 +0200
- To: libssh@xxxxxxxxxx
Added new condition in ssh_socket_unbuffered_write() so that POLLOUT event for socket is not to be enabled if the whole buffer has been successfully written with send()/write(). Signed-off-by: Nikolay N. Karikh <nitro@xxxxxxxxxxx> --- src/socket.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/socket.c b/src/socket.c index 76dc55e..da7c46a 100644 --- a/src/socket.c +++ b/src/socket.c@@ -567,11 +567,14 @@ static int ssh_socket_unbuffered_write(ssh_socket s, const void *buffer,
#else s->last_errno = errno; #endif - s->write_wontblock = 0; - /* Reactive the POLLOUT detector in the poll multiplexer system */ - if(s->poll_out){ - SSH_LOG(SSH_LOG_PACKET, "Enabling POLLOUT for socket");- ssh_poll_set_events(s->poll_out,ssh_poll_get_events(s->poll_out) | POLLOUT);
+ // only enable POLLOUT if unwritten data left in buffer + if (w < len) { + s->write_wontblock = 0; + /* Reactive the POLLOUT detector in the poll multiplexer system */ + if(s->poll_out){ + SSH_LOG(SSH_LOG_PACKET, "Enabling POLLOUT for socket");+ ssh_poll_set_events(s->poll_out,ssh_poll_get_events(s->poll_out) | POLLOUT);
+ } } if (w < 0) { s->data_except = 1; -- 1.9.1
Attachment:
smime.p7s
Description: Криптографическая подпись S/MIME
Re: [PATCH] socket: do not enable POLLOUT for empty out buffer | Aris Adamantiadis <aris@xxxxxxxxxxxx> |