mirror of
https://github.com/samba-team/samba.git
synced 2025-08-03 04:22:09 +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:
committed by
Gerald (Jerry) Carter
parent
9a6ce67fbf
commit
f1c88de7a2
@ -3088,7 +3088,12 @@ static void readline_callback(void)
|
|||||||
goto again;
|
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));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
|
@ -481,6 +481,7 @@ BOOL cli_set_case_sensitive(struct cli_state *cli, BOOL case_sensitive)
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
Send a keepalive packet to the server
|
Send a keepalive packet to the server
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
BOOL cli_send_keepalive(struct cli_state *cli)
|
BOOL cli_send_keepalive(struct cli_state *cli)
|
||||||
{
|
{
|
||||||
if (cli->fd == -1) {
|
if (cli->fd == -1) {
|
||||||
@ -495,3 +496,36 @@ BOOL cli_send_keepalive(struct cli_state *cli)
|
|||||||
}
|
}
|
||||||
return True;
|
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;
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user