diff options
author | Jeremy Allison <jra@samba.org> | 2002-05-10 01:15:36 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2002-05-10 01:15:36 +0000 |
commit | fc043110bc42d56c8686b9b64c46af7be2fd236e (patch) | |
tree | 79ea9fba636f6eacab7b7683f9cffaedf333fdcd | |
parent | af35c5a57ca5544441bd82b695d878f388cd5e73 (diff) | |
download | samba-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.c | 17 |
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); |