summaryrefslogtreecommitdiff
path: root/source3/libsmb/clientgen.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/libsmb/clientgen.c')
-rw-r--r--source3/libsmb/clientgen.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/source3/libsmb/clientgen.c b/source3/libsmb/clientgen.c
index 28da73894f..370249d047 100644
--- a/source3/libsmb/clientgen.c
+++ b/source3/libsmb/clientgen.c
@@ -367,15 +367,16 @@ void cli_nt_netlogon_netsec_session_close(struct cli_state *cli)
void cli_close_connection(struct cli_state *cli)
{
- /*
- * tell our peer to free his resources. Wihtout this, when an
- * application attempts to do a graceful shutdown and calls
- * smbc_free_context() to clean up all connections, some connections
- * can remain active on the peer end, until some (long) timeout period
- * later. This tree disconnect forces the peer to clean up, since the
- * connection will be going away.
- */
- cli_tdis(cli);
+ /*
+ * tell our peer to free his resources. Wihtout this, when an
+ * application attempts to do a graceful shutdown and calls
+ * smbc_free_context() to clean up all connections, some connections
+ * can remain active on the peer end, until some (long) timeout period
+ * later. This tree disconnect forces the peer to clean up, since the
+ * connection will be going away.
+ */
+ if ( cli->cnum != -1 )
+ cli_tdis(cli);
cli_nt_session_close(cli);
cli_nt_netlogon_netsec_session_close(cli);