diff options
author | Volker Lendecke <vl@samba.org> | 2008-01-25 21:24:48 +0100 |
---|---|---|
committer | Volker Lendecke <vl@samba.org> | 2008-02-02 11:03:21 +0100 |
commit | 0afbfa4284db8204a3696f4fea6cff96965e6074 (patch) | |
tree | 431cc875538207f6817d883f1a4ddfc71b8d3909 /source3/smbd | |
parent | 3e5b98555b832772d6fe93a57005bc39222a5189 (diff) | |
download | samba-0afbfa4284db8204a3696f4fea6cff96965e6074.tar.gz samba-0afbfa4284db8204a3696f4fea6cff96965e6074.tar.bz2 samba-0afbfa4284db8204a3696f4fea6cff96965e6074.zip |
Convert read_smb_length_return_keepalive to return NTSTATUS
(This used to be commit 73a79a957a33a8761acf54598ce71e3604ecf3c5)
Diffstat (limited to 'source3/smbd')
-rw-r--r-- | source3/smbd/process.c | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/source3/smbd/process.c b/source3/smbd/process.c index 4672510d8d..d6301d0d00 100644 --- a/source3/smbd/process.c +++ b/source3/smbd/process.c @@ -300,24 +300,30 @@ static ssize_t receive_smb_raw_talloc(TALLOC_CTX *mem_ctx, size_t *p_unread) { char lenbuf[4]; - ssize_t len,ret; + size_t len; + ssize_t ret; int min_recv_size = lp_min_receive_file_size(); + NTSTATUS status; set_smb_read_error(get_srv_read_error(),SMB_READ_OK); *p_unread = 0; - len = read_smb_length_return_keepalive(fd, lenbuf, - timeout, get_srv_read_error()); - if (len < 0) { - DEBUG(10,("receive_smb_raw: length < 0!\n")); + status = read_smb_length_return_keepalive(fd, lenbuf, timeout, &len); + if (!NT_STATUS_IS_OK(status)) { + DEBUG(10, ("receive_smb_raw: %s\n", nt_errstr(status))); - /* - * Correct fix. smb_read_error may have already been - * set. Only set it here if not already set. Global - * variables still suck :-). JRA. - */ + if (NT_STATUS_EQUAL(status, NT_STATUS_END_OF_FILE)) { + set_smb_read_error(get_srv_read_error(), SMB_READ_EOF); + return -1; + } - cond_set_smb_read_error(get_srv_read_error(),SMB_READ_ERROR); + if (NT_STATUS_EQUAL(status, NT_STATUS_IO_TIMEOUT)) { + set_smb_read_error(get_srv_read_error(), + SMB_READ_TIMEOUT); + return -1; + } + + set_smb_read_error(get_srv_read_error(), SMB_READ_ERROR); return -1; } |