From 846670fa0e280b32e70d14048c75d9af70a61225 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Sat, 30 Mar 2002 00:45:26 +0000 Subject: Hack to share pipe handles between lsa and samr pipes as NT4.x usrmgr insists on re-using an lsa handle opened on a pipe then closed - this keeps them around so long as a samr pipe is also open. Jeremy. (This used to be commit f029bd348c8c16a8774c3fb4f7f1d76470c7688f) --- source3/rpc_server/srv_lsa_hnd.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'source3') diff --git a/source3/rpc_server/srv_lsa_hnd.c b/source3/rpc_server/srv_lsa_hnd.c index 0e06a04177..84c3c5a959 100644 --- a/source3/rpc_server/srv_lsa_hnd.c +++ b/source3/rpc_server/srv_lsa_hnd.c @@ -27,6 +27,16 @@ #define MAX_OPEN_POLS 1024 #endif +/**************************************************************************** + Hack as handles need to be persisant over lsa pipe closes so long as a samr + pipe is open. JRA. +****************************************************************************/ + +static BOOL is_samr_lsa_pipe(const char *pipe_name) +{ + return (strstr(pipe_name, "samr") || strstr(pipe_name, "lsa")); +} + /**************************************************************************** Initialise a policy handle list on a pipe. Handle list is shared between all pipes of the same name. @@ -38,7 +48,8 @@ BOOL init_pipe_handle_list(pipes_struct *p, char *pipe_name) struct handle_list *hl = NULL; for (plist = get_first_internal_pipe(); plist; plist = get_next_internal_pipe(plist)) { - if (strequal( plist->name, pipe_name)) { + if (strequal( plist->name, pipe_name) || + (is_samr_lsa_pipe(plist->name) && is_samr_lsa_pipe(pipe_name))) { if (!plist->pipe_handles) { pstring msg; slprintf(msg, sizeof(msg)-1, "init_pipe_handles: NULL pipe_handle pointer in pipe %s", -- cgit