Hi. I've found a bug where ssh_channel_request_exec() will hang (I usually see
it about 1 time in 60) because poll() receives a POLLOUT event when it's
expecting a POLLIN event. The attached patch seems to fix it.
Thanks!
Asher Freese
Signed-off-by: Asher Freese <[email protected]>
The information contained in this e-mail message is intended only for the
personal and confidential use of the recipient(s) named above. If the reader of
this message is not the intended recipient or an agent responsible for
delivering it to the intended recipient, you are hereby notified that you have
received this message and any attachments in error and that any review,
dissemination, distribution, copying or alteration of this message and/or its
attachments is strictly prohibited. If you have received this message in error,
please notify the sender immediately by electronic mail, and delete the
original message.
diff -rupN libssh-0.6.3.orig/src/session.c libssh-0.6.3/src/session.c
--- libssh-0.6.3.orig/src/session.c 2014-03-04 04:14:20.000000000 -0600
+++ libssh-0.6.3/src/session.c 2014-11-20 10:13:30.743993337 -0600
@@ -526,7 +526,7 @@ int ssh_handle_packets(ssh_session sessi
spoll_in = ssh_socket_get_poll_handle_in(session->socket);
spoll_out = ssh_socket_get_poll_handle_out(session->socket);
- ssh_poll_add_events(spoll_in, POLLIN);
+ ssh_poll_add_events(spoll_in, POLLIN|POLLOUT);
ctx = ssh_poll_get_ctx(spoll_in);
if (!ctx) {