summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Schneider <asn@cynapses.org>2010-09-07 18:50:38 +0200
committerAndreas Schneider <asn@cynapses.org>2010-09-07 18:50:38 +0200
commitab2dafc44a993547ff3caca09603186dc62a4903 (patch)
tree1b185e2a8985a6d8730f8fb0657c8223668563cd
parent325cc4e39568831565fce816cfc3bb74a67ccb2c (diff)
downloadlibssh-ab2dafc44a993547ff3caca09603186dc62a4903.tar.gz
libssh-ab2dafc44a993547ff3caca09603186dc62a4903.tar.xz
libssh-ab2dafc44a993547ff3caca09603186dc62a4903.zip
socket: Make code easier to read and debug.
-rw-r--r--src/socket.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/socket.c b/src/socket.c
index 2f1f553..9d53207 100644
--- a/src/socket.c
+++ b/src/socket.c
@@ -528,6 +528,7 @@ int ssh_socket_write(ssh_socket s, const void *buffer, int len) {
*/
int ssh_socket_nonblocking_flush(ssh_socket s) {
ssh_session session = s->session;
+ uint32_t len;
int w;
enter_function();
@@ -543,9 +544,9 @@ int ssh_socket_nonblocking_flush(ssh_socket s) {
return SSH_ERROR;
}
- if (s->data_to_write && buffer_get_rest_len(s->out_buffer) > 0) {
- w = ssh_socket_unbuffered_write(s, buffer_get_rest(s->out_buffer),
- buffer_get_rest_len(s->out_buffer));
+ len = buffer_get_rest_len(s->out_buffer);
+ if (s->data_to_write && len > 0) {
+ w = ssh_socket_unbuffered_write(s, buffer_get_rest(s->out_buffer), len);
if (w < 0) {
session->alive = 0;
ssh_socket_close(s);
@@ -561,11 +562,12 @@ int ssh_socket_nonblocking_flush(ssh_socket s) {
}
/* Is there some data pending? */
- if (buffer_get_rest_len(s->out_buffer) > 0 && s->poll_out) {
- /* force the poll system to catch pollout events */
- ssh_poll_set_events(s->poll_out, ssh_poll_get_events(s->poll_out) |POLLOUT);
- leave_function();
- return SSH_AGAIN;
+ len = buffer_get_rest_len(s->out_buffer);
+ if (s->poll_out && len > 0) {
+ /* force the poll system to catch pollout events */
+ ssh_poll_set_events(s->poll_out, ssh_poll_get_events(s->poll_out) | POLLOUT);
+ leave_function();
+ return SSH_AGAIN;
}
/* all data written */