The branch, master has been updated
via e3830f2fe4d smbclient3: Replacing Echos in the cli status check
with TCP status check.
from a3f129f6634 s3:smbd: disable "vfs mkdir use tmp name = auto" on
OpenBSD
https://git.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit e3830f2fe4d50402760de88695118a28c83c7f3b
Author: Felix Bussmann <[email protected]>
Date: Mon Mar 18 15:19:18 2024 +0100
smbclient3: Replacing Echos in the cli status check with TCP status check.
Replacing the echoes, which were being sent every 5 seconds by the client
for a CLI status check, with a method that checks the status of the file
descriptor instead, for a POLLHUP, POLLRDHUP, or a timeout.
Signed-off-by: Felix Bussmann <[email protected]>
Reviewed-by: Ralph Boehme <[email protected]>
Reviewed-by: Andreas Schneider <[email protected]>
Autobuild-User(master): Anoop C S <[email protected]>
Autobuild-Date(master): Wed Mar 5 16:21:34 UTC 2025 on atb-devel-224
-----------------------------------------------------------------------
Summary of changes:
libcli/smb/smbXcli_base.c | 7 +++++++
source3/client/client.c | 39 ++++-----------------------------------
2 files changed, 11 insertions(+), 35 deletions(-)
Changeset truncated at 500 lines:
diff --git a/libcli/smb/smbXcli_base.c b/libcli/smb/smbXcli_base.c
index 6b479a78145..7f275b59991 100644
--- a/libcli/smb/smbXcli_base.c
+++ b/libcli/smb/smbXcli_base.c
@@ -474,6 +474,8 @@ struct smbXcli_conn *smbXcli_conn_create(TALLOC_CTX
*mem_ctx,
bool smbXcli_conn_is_connected(struct smbXcli_conn *conn)
{
+ int ret;
+
if (conn == NULL) {
return false;
}
@@ -482,6 +484,11 @@ bool smbXcli_conn_is_connected(struct smbXcli_conn *conn)
return false;
}
+ ret = samba_socket_poll_or_sock_error(conn->sock_fd);
+ if ( ret < 0) {
+ return false;
+ }
+
return true;
}
diff --git a/source3/client/client.c b/source3/client/client.c
index d1ccc8cb54e..c15d9a9eb69 100644
--- a/source3/client/client.c
+++ b/source3/client/client.c
@@ -6124,42 +6124,11 @@ cleanup:
static bool finished;
-/****************************************************************************
- Make sure we swallow keepalives during idle time.
-****************************************************************************/
-
-static void readline_callback(void)
+static void cli_status_check(void)
{
- static time_t last_t;
- struct timespec now;
- time_t t;
- NTSTATUS status;
- unsigned char garbage[16];
-
- clock_gettime_mono(&now);
- t = now.tv_sec;
-
- if (t - last_t < 5)
- return;
-
- last_t = t;
-
- /* Ping the server to keep the connection alive using SMBecho. */
- memset(garbage, 0xf0, sizeof(garbage));
- status = cli_echo(cli, 1, data_blob_const(garbage, sizeof(garbage)));
- if (NT_STATUS_IS_OK(status) ||
- NT_STATUS_EQUAL(status, NT_STATUS_INVALID_PARAMETER)) {
- /*
- * Even if server returns NT_STATUS_INVALID_PARAMETER
- * it still responded.
- * BUG: https://bugzilla.samba.org/show_bug.cgi?id=13007
- */
- return;
- }
-
if (!cli_state_is_connected(cli)) {
- DEBUG(0,("SMBecho failed (%s). The connection is "
- "disconnected now\n", nt_errstr(status)));
+ DEBUG(0,("SMB echo failed (%s). The connection is "
+ "disconnected now\n",
nt_errstr(NT_STATUS_CONNECTION_DISCONNECTED)));
finished = true;
smb_readline_done();
}
@@ -6192,7 +6161,7 @@ static int process_stdin(void)
TALLOC_FREE(frame);
break;
}
- line = smb_readline(the_prompt, readline_callback,
completion_fn);
+ line = smb_readline(the_prompt, cli_status_check,
completion_fn);
if (!line) {
TALLOC_FREE(frame);
break;
--
Samba Shared Repository