diff options
author | Volker Lendecke <vl@samba.org> | 2008-01-25 23:41:48 +0100 |
---|---|---|
committer | Volker Lendecke <vl@samba.org> | 2008-02-02 11:03:22 +0100 |
commit | 5e43eeb1b6eef7ea7a88ffc51a0a0535e9bd8023 (patch) | |
tree | 89fafb0e619e518499d7ff0f7ab8078e509f8628 /source3/libsmb | |
parent | e514cd0af56031cd0396e716e9e77edf897420e9 (diff) | |
download | samba-5e43eeb1b6eef7ea7a88ffc51a0a0535e9bd8023.tar.gz samba-5e43eeb1b6eef7ea7a88ffc51a0a0535e9bd8023.tar.bz2 samba-5e43eeb1b6eef7ea7a88ffc51a0a0535e9bd8023.zip |
Get rid of read_socket_with_timeout
(This used to be commit f9c8ac83ff42137d2101d3bb17e5dcc3c3d70a8f)
Diffstat (limited to 'source3/libsmb')
-rw-r--r-- | source3/libsmb/clientgen.c | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/source3/libsmb/clientgen.c b/source3/libsmb/clientgen.c index 042b3bdfb0..086c158ed2 100644 --- a/source3/libsmb/clientgen.c +++ b/source3/libsmb/clientgen.c @@ -180,8 +180,28 @@ bool cli_receive_smb(struct cli_state *cli) ssize_t cli_receive_smb_data(struct cli_state *cli, char *buffer, size_t len) { - return read_socket_with_timeout(cli->fd, buffer, len, len, - cli->timeout, &cli->smb_rw_error); + NTSTATUS status; + + set_smb_read_error(&cli->smb_rw_error, SMB_READ_OK); + + status = read_socket_with_timeout_ntstatus( + cli->fd, buffer, len, len, cli->timeout, NULL); + if (NT_STATUS_IS_OK(status)) { + return len; + } + + if (NT_STATUS_EQUAL(status, NT_STATUS_END_OF_FILE)) { + set_smb_read_error(&cli->smb_rw_error, SMB_READ_EOF); + return -1; + } + + if (NT_STATUS_EQUAL(status, NT_STATUS_IO_TIMEOUT)) { + set_smb_read_error(&cli->smb_rw_error, SMB_READ_TIMEOUT); + return -1; + } + + set_smb_read_error(&cli->smb_rw_error, SMB_READ_ERROR); + return -1; } /**************************************************************************** |