diff options
Diffstat (limited to 'libssh/sftp.c')
-rw-r--r-- | libssh/sftp.c | 41 |
1 files changed, 23 insertions, 18 deletions
diff --git a/libssh/sftp.c b/libssh/sftp.c index 35b20b5..4b1ca26 100644 --- a/libssh/sftp.c +++ b/libssh/sftp.c @@ -190,24 +190,29 @@ void sftp_free(SFTP_SESSION *sftp){ } int sftp_packet_write(SFTP_SESSION *sftp,u8 type, BUFFER *payload){ - int size; - if (buffer_prepend_data(payload, &type, sizeof(u8)) < 0) { - return -1; - } - size=htonl(buffer_get_len(payload)); - if (buffer_prepend_data(payload, &size, sizeof(u32)) < 0) { - return -1; - } - size=channel_write(sftp->channel,buffer_get(payload),buffer_get_len(payload)); - if (size < 0) { - return -1; - } else if((u32) size != buffer_get_len(payload)){ - ssh_log(sftp->session, SSH_LOG_PACKET, - "Had to write %d bytes, wrote only %d", - buffer_get_len(payload), - size); - } - return size; + int size; + + if (buffer_prepend_data(payload, &type, sizeof(u8)) < 0) { + return -1; + } + + size = htonl(buffer_get_len(payload)); + if (buffer_prepend_data(payload, &size, sizeof(u32)) < 0) { + return -1; + } + + size = channel_write(sftp->channel, buffer_get(payload), + buffer_get_len(payload)); + if (size < 0) { + return -1; + } else if((u32) size != buffer_get_len(payload)) { + ssh_log(sftp->session, SSH_LOG_PACKET, + "Had to write %d bytes, wrote only %d", + buffer_get_len(payload), + size); + } + + return size; } SFTP_PACKET *sftp_packet_read(SFTP_SESSION *sftp){ |