summaryrefslogtreecommitdiff
path: root/source3/lib
diff options
context:
space:
mode:
Diffstat (limited to 'source3/lib')
-rw-r--r--source3/lib/messages.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/source3/lib/messages.c b/source3/lib/messages.c
index 096452784a..7ce050d70d 100644
--- a/source3/lib/messages.c
+++ b/source3/lib/messages.c
@@ -458,3 +458,33 @@ BOOL message_send_all(TDB_CONTEXT *conn_tdb, int msg_type,
}
/** @} **/
+
+
+/*
+ lock the messaging tdb based on a string - this is used as a primitive form of mutex
+ between smbd instances.
+*/
+BOOL message_named_mutex(const char *name)
+{
+ TDB_DATA key;
+
+ if (!message_init()) return False;
+
+ key.dptr = name;
+ key.dsize = strlen(name)+1;
+
+ return (tdb_chainlock(tdb, key) == 0);
+}
+
+/*
+ unlock a named mutex
+*/
+void message_named_mutex_release(const char *name)
+{
+ TDB_DATA key;
+
+ key.dptr = name;
+ key.dsize = strlen(name)+1;
+
+ tdb_chainunlock(tdb, key);
+}