1
0
mirror of https://github.com/samba-team/samba.git synced 2025-08-02 00:22:11 +03:00

r11976: (Slightly modified) Volker fix for #3293. Use SMBecho instead of

chkpath to keep a connection alive.
Jeremy.
This commit is contained in:
Jeremy Allison
2005-11-30 17:53:21 +00:00
committed by Gerald (Jerry) Carter
parent 9a6ce67fbf
commit f1c88de7a2
2 changed files with 40 additions and 1 deletions

View File

@ -3088,7 +3088,12 @@ static void readline_callback(void)
goto again;
}
cli_chkpath(cli, "\\");
/* Ping the server to keep the connection alive using SMBecho. */
{
unsigned char garbage[16];
memset(garbage, 0xf0, sizeof(garbage));
cli_echo(cli, garbage, sizeof(garbage));
}
}
/****************************************************************************

View File

@ -481,6 +481,7 @@ BOOL cli_set_case_sensitive(struct cli_state *cli, BOOL case_sensitive)
/****************************************************************************
Send a keepalive packet to the server
****************************************************************************/
BOOL cli_send_keepalive(struct cli_state *cli)
{
if (cli->fd == -1) {
@ -495,3 +496,36 @@ BOOL cli_send_keepalive(struct cli_state *cli)
}
return True;
}
/****************************************************************************
Send/receive a SMBecho command: ping the server
****************************************************************************/
BOOL cli_echo(struct cli_state *cli, unsigned char *data, size_t length)
{
char *p;
SMB_ASSERT(length < 1024);
memset(cli->outbuf,'\0',smb_size);
set_message(cli->outbuf,1,length,True);
SCVAL(cli->outbuf,smb_com,SMBecho);
SSVAL(cli->outbuf,smb_tid,65535);
SSVAL(cli->outbuf,smb_vwv0,1);
cli_setup_packet(cli);
p = smb_buf(cli->outbuf);
memcpy(p, data, length);
p += length;
cli_setup_bcc(cli, p);
cli_send_smb(cli);
if (!cli_receive_smb(cli)) {
return False;
}
if (cli_is_error(cli)) {
return False;
}
return True;
}