summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2002-05-10 01:15:36 +0000
committerJeremy Allison <jra@samba.org>2002-05-10 01:15:36 +0000
commitfc043110bc42d56c8686b9b64c46af7be2fd236e (patch)
tree79ea9fba636f6eacab7b7683f9cffaedf333fdcd
parentaf35c5a57ca5544441bd82b695d878f388cd5e73 (diff)
downloadsamba-fc043110bc42d56c8686b9b64c46af7be2fd236e.tar.gz
samba-fc043110bc42d56c8686b9b64c46af7be2fd236e.tar.xz
samba-fc043110bc42d56c8686b9b64c46af7be2fd236e.zip
Fix the bug that refused to allow IPC$ connection to be idled if a pipe
was open - we now only refuse to allow IPC$ connection to be idled if a handle is open on a pipe. Jeremy.
-rw-r--r--source/rpc_server/srv_lsa_hnd.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/source/rpc_server/srv_lsa_hnd.c b/source/rpc_server/srv_lsa_hnd.c
index 84c3c5a9598..62af0ecac81 100644
--- a/source/rpc_server/srv_lsa_hnd.c
+++ b/source/rpc_server/srv_lsa_hnd.c
@@ -134,6 +134,14 @@ BOOL create_policy_hnd(pipes_struct *p, POLICY_HND *hnd, void (*free_fn)(void *)
DLIST_ADD(p->pipe_handles->Policy, pol);
p->pipe_handles->count++;
+ /*
+ * Ensure we don't idle this connection if a handle is open.
+ * Increment the number of files open on the first handle create.
+ */
+
+ if (p->pipe_handles->count == 1)
+ p->conn->num_files_open++;
+
*hnd = pol->pol_hnd;
DEBUG(4,("Opened policy hnd[%d] ", (int)p->pipe_handles->count));
@@ -201,6 +209,15 @@ BOOL close_policy_hnd(pipes_struct *p, POLICY_HND *hnd)
p->pipe_handles->count--;
+ /*
+ * Ensure we can idle this connection if this is the last handle.
+ * Decrement the number of files open on the last handle delete.
+ */
+
+ if (p->pipe_handles->count == 0)
+ p->conn->num_files_open--;
+
+
DLIST_REMOVE(p->pipe_handles->Policy, pol);
ZERO_STRUCTP(pol);