channels: Fix a possible infinite loop if the connection dropped.

This fixes bug #85.
This commit is contained in:
Andreas Schneider
2012-10-22 18:13:53 +02:00
parent ae218d0d15
commit 2ee6282fdd

View File

@@ -1233,7 +1233,9 @@ int channel_write_common(ssh_channel channel, const void *data,
/* it's a good idea to flush the socket now */
do {
rc = ssh_handle_packets(session, timeout);
} while(ssh_socket_buffered_write_bytes(session->socket) > 0 && timeout != 0);
} while(rc == SSH_OK &&
timeout != 0 &&
ssh_socket_buffered_write_bytes(session->socket) > 0);
out:
leave_function();
return (int)(origlen - len);