mirror of
https://git.libssh.org/projects/libssh.git
synced 2026-02-12 03:00:26 +09:00
Add error checks to ssh_socket_write().
git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@466 7dcaeef0-15fb-0310-b436-a5af3365683c
This commit is contained in:
@@ -333,16 +333,19 @@ int ssh_socket_completewrite(struct socket *s, const void *buffer, u32 len) {
|
|||||||
*/
|
*/
|
||||||
int ssh_socket_read(struct socket *s, void *buffer, int len){
|
int ssh_socket_read(struct socket *s, void *buffer, int len){
|
||||||
SSH_SESSION *session = s->session;
|
SSH_SESSION *session = s->session;
|
||||||
int ret;
|
int rc = SSH_ERROR;
|
||||||
|
|
||||||
enter_function();
|
enter_function();
|
||||||
ret = ssh_socket_wait_for_data(s, s->session, len);
|
|
||||||
if(ret != SSH_OK){
|
rc = ssh_socket_wait_for_data(s, s->session, len);
|
||||||
|
if (rc != SSH_OK) {
|
||||||
leave_function();
|
leave_function();
|
||||||
return ret;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy(buffer, buffer_get_rest(s->in_buffer), len);
|
memcpy(buffer, buffer_get_rest(s->in_buffer), len);
|
||||||
buffer_pass_bytes(s->in_buffer, len);
|
buffer_pass_bytes(s->in_buffer, len);
|
||||||
|
|
||||||
leave_function();
|
leave_function();
|
||||||
return SSH_OK;
|
return SSH_OK;
|
||||||
}
|
}
|
||||||
@@ -355,16 +358,22 @@ int ssh_socket_read(struct socket *s, void *buffer, int len){
|
|||||||
*/
|
*/
|
||||||
int ssh_socket_write(struct socket *s, const void *buffer, int len) {
|
int ssh_socket_write(struct socket *s, const void *buffer, int len) {
|
||||||
SSH_SESSION *session = s->session;
|
SSH_SESSION *session = s->session;
|
||||||
int ret;
|
int rc = SSH_ERROR;
|
||||||
|
|
||||||
enter_function();
|
enter_function();
|
||||||
buffer_add_data(s->out_buffer,buffer,len);
|
|
||||||
if(buffer_get_rest_len(s->out_buffer) > WRITE_BUFFERING_THRESHOLD)
|
if (buffer_add_data(s->out_buffer, buffer, len) < 0) {
|
||||||
ret=ssh_socket_nonblocking_flush(s);
|
return SSH_ERROR;
|
||||||
else
|
}
|
||||||
ret=len;
|
|
||||||
|
if (buffer_get_rest_len(s->out_buffer) > WRITE_BUFFERING_THRESHOLD) {
|
||||||
|
rc = ssh_socket_nonblocking_flush(s);
|
||||||
|
} else {
|
||||||
|
rc = len;
|
||||||
|
}
|
||||||
|
|
||||||
leave_function();
|
leave_function();
|
||||||
return ret;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user