*/
#include "includes.h"
+#include "smb_signing.h"
+#include "async_smb.h"
/*******************************************************************
Setup the word count and byte count for a client smb message.
/* If the server is not responding, note that now */
if (len < 0) {
- DEBUG(0, ("Receiving SMB: Server stopped responding\n"));
- close(cli->fd);
- cli->fd = -1;
+ /*
+ * only log if the connection should still be open and not when
+ * the connection was closed due to a dropped ip message
+ */
+ if (cli->fd != -1) {
+ char addr[INET6_ADDRSTRLEN];
+ print_sockaddr(addr, sizeof(addr), &cli->dest_ss);
+ DEBUG(0, ("Receiving SMB: Server %s stopped responding\n",
+ addr));
+ close(cli->fd);
+ cli->fd = -1;
+ }
return false;
}
return true;
}
-/****************************************************************************
- Read the data portion of a readX smb.
- The timeout is in milliseconds
-****************************************************************************/
-
-ssize_t cli_receive_smb_data(struct cli_state *cli, char *buffer, size_t len)
-{
- NTSTATUS status;
-
- set_smb_read_error(&cli->smb_rw_error, SMB_READ_OK);
-
- status = read_fd_with_timeout(
- 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;
-}
-
static ssize_t write_socket(int fd, const char *buf, size_t len)
{
ssize_t ret=0;
void cli_shutdown(struct cli_state *cli)
{
struct cli_state *cli_head;
+ if (cli == NULL) {
+ return;
+ }
DLIST_HEAD(cli, cli_head);
if (cli_head == cli) {
/*
return ret;
}
-/****************************************************************************
-Send a keepalive packet to the server
-****************************************************************************/
-
-bool cli_send_keepalive(struct cli_state *cli)
-{
- if (cli->fd == -1) {
- DEBUG(3, ("cli_send_keepalive: fd == -1\n"));
- return false;
- }
- if (!send_keepalive(cli->fd)) {
- close(cli->fd);
- cli->fd = -1;
- DEBUG(0,("Error sending keepalive packet to client.\n"));
- return false;
- }
- return true;
-}
-
struct cli_echo_state {
uint16_t vwv[1];
DATA_BLOB data;
pnum_bytes, pbytes);
fail:
TALLOC_FREE(ev);
- if (NT_STATUS_IS_OK(status)) {
+ if (NT_STATUS_IS_OK(status) && (result_parent != NULL)) {
*result_parent = req;
}
return status;