diff options
Diffstat (limited to 'source3')
-rw-r--r-- | source3/include/proto.h | 2 | ||||
-rw-r--r-- | source3/lib/util_sock.c | 42 | ||||
-rw-r--r-- | source3/smbd/reply.c | 42 |
3 files changed, 42 insertions, 44 deletions
diff --git a/source3/include/proto.h b/source3/include/proto.h index ebb3432163..8e4c3111b5 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -1448,8 +1448,6 @@ bool send_keepalive(int client); NTSTATUS read_smb_length_return_keepalive(int fd, char *inbuf, unsigned int timeout, size_t *len); -NTSTATUS read_smb_length(int fd, char *inbuf, unsigned int timeout, - size_t *len); NTSTATUS receive_smb_raw(int fd, char *buffer, size_t buflen, diff --git a/source3/lib/util_sock.c b/source3/lib/util_sock.c index 756ce96abc..3bc60db61e 100644 --- a/source3/lib/util_sock.c +++ b/source3/lib/util_sock.c @@ -668,48 +668,6 @@ NTSTATUS read_smb_length_return_keepalive(int fd, char *inbuf, } /**************************************************************************** - Read 4 bytes of a smb packet and return the smb length of the packet. - Store the result in the buffer. This version of the function will - never return a session keepalive (length of zero). - Timeout is in milliseconds. -****************************************************************************/ - -NTSTATUS read_smb_length(int fd, char *inbuf, unsigned int timeout, - size_t *len) -{ - uint8_t msgtype = SMBkeepalive; - - while (msgtype == SMBkeepalive) { - NTSTATUS status; - - status = read_smb_length_return_keepalive(fd, inbuf, timeout, - len); - if (!NT_STATUS_IS_OK(status)) { - if (fd == smbd_server_fd()) { - char addr[INET6_ADDRSTRLEN]; - /* Try and give an error message - * saying what client failed. */ - DEBUG(0, ("read_fd_with_timeout failed for " - "client %s read error = %s.\n", - get_peer_addr(fd,addr,sizeof(addr)), - nt_errstr(status))); - } else { - DEBUG(0, ("read_fd_with_timeout failed, read " - "error = %s.\n", nt_errstr(status))); - } - return status; - } - - msgtype = CVAL(inbuf, 0); - } - - DEBUG(10,("read_smb_length: got smb length of %lu\n", - (unsigned long)len)); - - return NT_STATUS_OK; -} - -/**************************************************************************** Read an smb from a fd. The timeout is in milliseconds. This function will return on receipt of a session keepalive packet. diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c index 18d198fe0f..437d4d86dc 100644 --- a/source3/smbd/reply.c +++ b/source3/smbd/reply.c @@ -3797,6 +3797,48 @@ void error_to_writebrawerr(struct smb_request *req) } /**************************************************************************** + Read 4 bytes of a smb packet and return the smb length of the packet. + Store the result in the buffer. This version of the function will + never return a session keepalive (length of zero). + Timeout is in milliseconds. +****************************************************************************/ + +static NTSTATUS read_smb_length(int fd, char *inbuf, unsigned int timeout, + size_t *len) +{ + uint8_t msgtype = SMBkeepalive; + + while (msgtype == SMBkeepalive) { + NTSTATUS status; + + status = read_smb_length_return_keepalive(fd, inbuf, timeout, + len); + if (!NT_STATUS_IS_OK(status)) { + if (fd == smbd_server_fd()) { + char addr[INET6_ADDRSTRLEN]; + /* Try and give an error message + * saying what client failed. */ + DEBUG(0, ("read_fd_with_timeout failed for " + "client %s read error = %s.\n", + get_peer_addr(fd,addr,sizeof(addr)), + nt_errstr(status))); + } else { + DEBUG(0, ("read_fd_with_timeout failed, read " + "error = %s.\n", nt_errstr(status))); + } + return status; + } + + msgtype = CVAL(inbuf, 0); + } + + DEBUG(10,("read_smb_length: got smb length of %lu\n", + (unsigned long)len)); + + return NT_STATUS_OK; +} + +/**************************************************************************** Reply to a writebraw (core+ or LANMAN1.0 protocol). ****************************************************************************/ |