r4355: More work from the elves on Christmas eve:
[samba.git] / source / libcli / unexpected.c
index c80dfa0465cd70d5b1eaf4bd50a6bb5df01635fb..264b9d7b33520976507f7fc582ba610fd3ebcf8b 100644 (file)
@@ -21,7 +21,7 @@
 
 #include "includes.h"
 
-static TDB_CONTEXT *tdbd = NULL;
+static struct tdb_wrap *tdbd = NULL;
 
 /* the key type used in the unexpeceted packet database */
 struct unexpected_key {
@@ -44,17 +44,14 @@ void unexpected_packet(struct packet_struct *p)
        struct unexpected_key key;
        char buf[1024];
        int len=0;
-       TALLOC_CTX *mem_ctx;
 
        if (!tdbd) {
-               mem_ctx = talloc_init("receive_unexpected");
-               if (!mem_ctx) return;
-               tdbd = tdb_open_log(lock_path(mem_ctx, "unexpected.tdb"), 0, 
-                              TDB_CLEAR_IF_FIRST|TDB_DEFAULT,
-                              O_RDWR | O_CREAT, 0644);
-               talloc_destroy(mem_ctx);
+               char *path = smbd_tmp_path(NULL, "unexpected.tdb");
+               tdbd = tdb_wrap_open(NULL, path, 0, 
+                                    TDB_DEFAULT,
+                                    O_RDWR | O_CREAT, 0644);
+               talloc_free(path);
                if (!tdbd) {
-                       DEBUG(0,("Failed to open unexpected.tdb\n"));
                        return;
                }
        }
@@ -72,7 +69,7 @@ void unexpected_packet(struct packet_struct *p)
        dbuf.dptr = buf;
        dbuf.dsize = len;
 
-       tdb_store(tdbd, kbuf, dbuf, TDB_REPLACE);
+       tdb_store(tdbd->tdb, kbuf, dbuf, TDB_REPLACE);
 }
 
 
@@ -107,7 +104,7 @@ void clear_unexpected(time_t t)
 
        lastt = t;
 
-       tdb_traverse(tdbd, traverse_fn, NULL);
+       tdb_traverse(tdbd->tdb, traverse_fn, NULL);
 }
 
 
@@ -150,23 +147,24 @@ check for a particular packet in the unexpected packet queue
 struct packet_struct *receive_unexpected(enum packet_type packet_type, int id, 
                                         const char *mailslot_name)
 {
-       TDB_CONTEXT *tdb2;
-       TALLOC_CTX *mem_ctx;
-
-       mem_ctx = talloc_init("receive_unexpected");
-       if (!mem_ctx) return NULL;
-       tdb2 = tdb_open_log(lock_path(mem_ctx, "unexpected.tdb"), 0, 0, O_RDONLY, 0);
-       talloc_destroy(mem_ctx);
-       if (!tdb2) return NULL;
+       struct tdb_wrap *tdb2;
+       char *path;
+
+       path = smbd_tmp_path(NULL, "unexpected.tdb");
+       tdb2 = tdb_wrap_open(NULL, path, 0, 0, O_RDONLY, 0);
+       talloc_free(path);
+       if (!tdb2) {
+               return NULL;
+       }
 
        matched_packet = NULL;
        match_id = id;
        match_type = packet_type;
        match_name = mailslot_name;
 
-       tdb_traverse(tdb2, traverse_match, NULL);
+       tdb_traverse(tdb2->tdb, traverse_match, NULL);
 
-       tdb_close(tdb2);
+       talloc_free(tdb2);
 
        return matched_packet;
 }