mirror of
https://github.com/samba-team/samba.git
synced 2024-12-24 21:34:56 +03:00
Convert read_smb_length to return NTSTATUS
(This used to be commit 5750c3a51b
)
This commit is contained in:
parent
0afbfa4284
commit
9f6e983d0b
@ -1174,31 +1174,18 @@ NTSTATUS read_smb_length_return_keepalive(int fd, char *inbuf,
|
||||
Timeout is in milliseconds.
|
||||
****************************************************************************/
|
||||
|
||||
ssize_t read_smb_length(int fd, char *inbuf, unsigned int timeout, enum smb_read_errors *pre)
|
||||
NTSTATUS read_smb_length(int fd, char *inbuf, unsigned int timeout,
|
||||
size_t *len)
|
||||
{
|
||||
size_t len;
|
||||
uint8_t msgtype = SMBkeepalive;
|
||||
|
||||
set_smb_read_error(pre, SMB_READ_OK);
|
||||
|
||||
while (msgtype == SMBkeepalive) {
|
||||
NTSTATUS status;
|
||||
|
||||
status = read_smb_length_return_keepalive(fd, inbuf, timeout,
|
||||
&len);
|
||||
len);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
if (NT_STATUS_EQUAL(status, NT_STATUS_END_OF_FILE)) {
|
||||
set_smb_read_error(pre, SMB_READ_EOF);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (NT_STATUS_EQUAL(status, NT_STATUS_IO_TIMEOUT)) {
|
||||
set_smb_read_error(pre, SMB_READ_TIMEOUT);
|
||||
return -1;
|
||||
}
|
||||
|
||||
set_smb_read_error(pre, SMB_READ_ERROR);
|
||||
return -1;
|
||||
return status;
|
||||
}
|
||||
|
||||
msgtype = CVAL(inbuf, 0);
|
||||
@ -1207,7 +1194,7 @@ ssize_t read_smb_length(int fd, char *inbuf, unsigned int timeout, enum smb_read
|
||||
DEBUG(10,("read_smb_length: got smb length of %lu\n",
|
||||
(unsigned long)len));
|
||||
|
||||
return len;
|
||||
return NT_STATUS_OK;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
@ -3492,18 +3492,12 @@ void reply_writebraw(struct smb_request *req)
|
||||
}
|
||||
|
||||
/* Now read the raw data into the buffer and write it */
|
||||
if (read_smb_length(smbd_server_fd(),buf,
|
||||
SMB_SECONDARY_WAIT, get_srv_read_error()) == -1) {
|
||||
status = read_smb_length(smbd_server_fd(), buf, SMB_SECONDARY_WAIT,
|
||||
&numtowrite);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
exit_server_cleanly("secondary writebraw failed");
|
||||
}
|
||||
|
||||
/*
|
||||
* Even though this is not an smb message,
|
||||
* smb_len returns the generic length of a packet.
|
||||
*/
|
||||
|
||||
numtowrite = smb_len(buf);
|
||||
|
||||
/* Set up outbuf to return the correct size */
|
||||
reply_outbuf(req, 1, 0);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user