s3: Make connections_forall open connections.tdb r/w
authorVolker Lendecke <vl@samba.org>
Mon, 1 Mar 2010 12:57:36 +0000 (13:57 +0100)
committerVolker Lendecke <vl@samba.org>
Mon, 1 Mar 2010 13:02:35 +0000 (14:02 +0100)
connections_forall is called from count_current_connections() which potentially
deletes dead records. This needs r/w access to connections.tdb.
connections_traverse says it does not provide this. Does not really matter in
the smbd case, because we have opened it before r/w, so this is "just" cleanup.

source3/lib/conn_tdb.c

index a10734bed5f88bf6007e656a5710e0d5a7d0da66..90e455a73e13f11816f449c12debdbb975d0d106 100644 (file)
@@ -112,12 +112,18 @@ int connections_forall(int (*fn)(struct db_record *rec,
                                 void *private_data),
                       void *private_data)
 {
+       struct db_context *ctx;
        struct conn_traverse_state state;
 
+       ctx = connections_db_ctx(true);
+       if (ctx == NULL) {
+               return -1;
+       }
+
        state.fn = fn;
        state.private_data = private_data;
 
-       return connections_traverse(conn_traverse_fn, (void *)&state);
+       return ctx->traverse(ctx, conn_traverse_fn, (void *)&state);
 }
 
 bool connections_init(bool rw)