diff options
author | Volker Lendecke <vl@samba.org> | 2008-03-10 21:08:29 +0100 |
---|---|---|
committer | Volker Lendecke <vl@samba.org> | 2008-03-10 21:08:45 +0100 |
commit | 1ebfc66b2c145289d1e1314e8415d9e3c6f405ae (patch) | |
tree | 30b3ca059640ecc963a8744c2a69ef4151dbac7b /source3/winbindd | |
parent | d634ab06b34990b6eecee751435f2436ff76ec44 (diff) | |
download | samba-1ebfc66b2c145289d1e1314e8415d9e3c6f405ae.tar.gz samba-1ebfc66b2c145289d1e1314e8415d9e3c6f405ae.tar.bz2 samba-1ebfc66b2c145289d1e1314e8415d9e3c6f405ae.zip |
Use a separate tdb for mutexes
Another preparation to convert secrets.c to dbwrap: The dbwrap API does not
provide a sane tdb_lock_with_timeout abstraction. In the clustered case the DC
mutex is needed per-node anyway, so it is perfectly fine to use a local mutex
only.
(This used to be commit f94a63cd8f94490780ad9331da229c0bcb2ca5d6)
Diffstat (limited to 'source3/winbindd')
-rw-r--r-- | source3/winbindd/winbindd_cm.c | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/source3/winbindd/winbindd_cm.c b/source3/winbindd/winbindd_cm.c index 0f536cdfb8..072b4ee98f 100644 --- a/source3/winbindd/winbindd_cm.c +++ b/source3/winbindd/winbindd_cm.c @@ -747,7 +747,7 @@ static NTSTATUS cm_prepare_connection(const struct winbindd_domain *domain, char *ipc_domain = NULL; char *ipc_password = NULL; - bool got_mutex; + struct named_mutex *mutex; NTSTATUS result = NT_STATUS_UNSUCCESSFUL; @@ -761,10 +761,9 @@ static NTSTATUS cm_prepare_connection(const struct winbindd_domain *domain, *retry = True; - got_mutex = secrets_named_mutex(controller, - WINBIND_SERVER_MUTEX_WAIT_TIME); - - if (!got_mutex) { + mutex = grab_named_mutex(talloc_tos(), controller, + WINBIND_SERVER_MUTEX_WAIT_TIME); + if (mutex == NULL) { DEBUG(0,("cm_prepare_connection: mutex grab failed for %s\n", controller)); result = NT_STATUS_POSSIBLE_DEADLOCK; @@ -952,8 +951,7 @@ static NTSTATUS cm_prepare_connection(const struct winbindd_domain *domain, goto done; } - secrets_named_mutex_release(controller); - got_mutex = False; + TALLOC_FREE(mutex); *retry = False; /* set the domain if empty; needed for schannel connections */ @@ -964,10 +962,7 @@ static NTSTATUS cm_prepare_connection(const struct winbindd_domain *domain, result = NT_STATUS_OK; done: - if (got_mutex) { - secrets_named_mutex_release(controller); - } - + TALLOC_FREE(mutex); SAFE_FREE(machine_account); SAFE_FREE(machine_password); SAFE_FREE(machine_krb5_principal); |