version 1.209, 2015/03/11 00:48:39 |
version 1.210, 2015/03/24 20:10:08 |
|
|
* Since we are blocking, ensure that all written packets have |
* Since we are blocking, ensure that all written packets have |
* been sent. |
* been sent. |
*/ |
*/ |
if ((r = ssh_packet_write_wait(ssh)) != 0) { |
if ((r = ssh_packet_write_wait(ssh)) != 0) |
free(setp); |
goto out; |
return r; |
|
} |
|
|
|
/* Stay in the loop until we have received a complete packet. */ |
/* Stay in the loop until we have received a complete packet. */ |
for (;;) { |
for (;;) { |
|
|
len = roaming_read(state->connection_in, buf, |
len = roaming_read(state->connection_in, buf, |
sizeof(buf), &cont); |
sizeof(buf), &cont); |
} while (len == 0 && cont); |
} while (len == 0 && cont); |
if (len == 0) |
if (len == 0) { |
return SSH_ERR_CONN_CLOSED; |
r = SSH_ERR_CONN_CLOSED; |
if (len < 0) |
goto out; |
return SSH_ERR_SYSTEM_ERROR; |
} |
|
if (len < 0) { |
|
r = SSH_ERR_SYSTEM_ERROR; |
|
goto out; |
|
} |
|
|
/* Append it to the buffer. */ |
/* Append it to the buffer. */ |
if ((r = ssh_packet_process_incoming(ssh, buf, len)) != 0) |
if ((r = ssh_packet_process_incoming(ssh, buf, len)) != 0) |
return r; |
goto out; |
} |
} |
|
out: |
free(setp); |
free(setp); |
return r; |
return r; |
} |
} |