summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/utils/smbcontrol.c22
-rw-r--r--source3/utils/status.c1
2 files changed, 14 insertions, 9 deletions
diff --git a/source3/utils/smbcontrol.c b/source3/utils/smbcontrol.c
index 5bb4e602f0..30861030d8 100644
--- a/source3/utils/smbcontrol.c
+++ b/source3/utils/smbcontrol.c
@@ -125,17 +125,21 @@ send a message to a named destination
static BOOL send_message(char *dest, int msg_type, void *buf, int len, BOOL duplicates)
{
pid_t pid;
- TDB_CONTEXT *the_tdb;
-
- the_tdb = tdb_open(lock_path("connections.tdb"), 0, 0, O_RDONLY, 0);
- if (!the_tdb) {
- fprintf(stderr,"Failed to open connections database in send_message.\n");
- return False;
- }
-
/* "smbd" is the only broadcast operation */
if (strequal(dest,"smbd")) {
- return message_send_all(the_tdb,msg_type, buf, len, duplicates);
+ TDB_CONTEXT *tdb;
+ BOOL ret;
+
+ tdb = tdb_open(lock_path("connections.tdb"), 0, 0, O_RDONLY, 0);
+ if (!tdb) {
+ fprintf(stderr,"Failed to open connections database in send_message.\n");
+ return False;
+ }
+
+ ret = message_send_all(tdb,msg_type, buf, len, duplicates);
+ tdb_close(tdb);
+
+ return ret;
} else if (strequal(dest,"nmbd")) {
pid = pidfile_pid(dest);
if (pid == 0) {
diff --git a/source3/utils/status.c b/source3/utils/status.c
index 06abd09d92..243ccdd755 100644
--- a/source3/utils/status.c
+++ b/source3/utils/status.c
@@ -327,6 +327,7 @@ static int traverse_fn1(TDB_CONTEXT *tdb, TDB_DATA kbuf, TDB_DATA dbuf, void *st
printf("----------------------------------------------\n");
}
tdb_traverse(tdb, traverse_fn1, NULL);
+ tdb_close(tdb);
locks:
if (processes_only) exit(0);