aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Schneider <asn@cynapses.org>2010-07-06 23:18:16 +0200
committerAndreas Schneider <asn@cynapses.org>2010-07-06 23:18:16 +0200
commit94fdcf7a2a5d41220e667cb85d1f485254020d61 (patch)
treeadcb39231577fd1938b8cd60d40f66912e215fff
parent59a95fc3a773b42c8de003e55c18dcada53c2976 (diff)
downloadlibssh-94fdcf7a2a5d41220e667cb85d1f485254020d61.tar.gz
libssh-94fdcf7a2a5d41220e667cb85d1f485254020d61.tar.xz
libssh-94fdcf7a2a5d41220e667cb85d1f485254020d61.zip
socket: Fixed ssh_socket_poll().
If we don't have date to read or write, leave ssh_socket_poll().
-rw-r--r--libssh/socket.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/libssh/socket.c b/libssh/socket.c
index c88a149d..b722462d 100644
--- a/libssh/socket.c
+++ b/libssh/socket.c
@@ -484,9 +484,14 @@ int ssh_socket_poll(struct socket *s, int *writeable, int *except) {
if (!s->data_to_read) {
fd->events |= POLLIN;
- }
- if (!s->data_to_write) {
+ } else if (!s->data_to_write) {
fd->events |= POLLOUT;
+ } else {
+ *except = 1;
+ *writeable = 0;
+
+ leave_function();
+ return 1;
}
/* Make the call, and listen for errors */