--- source3/lib/sessionid_tdb.c.bug8546 2011-10-27 11:43:31.000000000 -0200 +++ source3/lib/sessionid_tdb.c 2011-10-27 13:56:34.000000000 -0200 @@ -23,6 +23,7 @@ #include "session.h" #include "util_tdb.h" + static struct db_context *session_db_ctx(void) { static struct db_context *session_db_ctx_ptr; @@ -37,6 +38,20 @@ return session_db_ctx_ptr; } +static struct db_context *session_db_ctx_readonly(void) +{ + static struct db_context *session_db_ctx_ptr; + + if (session_db_ctx_ptr != NULL) { + return session_db_ctx_ptr; + } + + session_db_ctx_ptr = db_open(NULL, lock_path("sessionid.tdb"), 0, + TDB_CLEAR_IF_FIRST|TDB_DEFAULT|TDB_INCOMPATIBLE_HASH, + O_RDONLY | O_CREAT, 0644); + return session_db_ctx_ptr; +} + bool sessionid_init(void) { if (session_db_ctx() == NULL) { @@ -51,7 +66,7 @@ { struct db_context *db; - db = session_db_ctx(); + db = session_db_ctx_readonly(); if (db == NULL) { return NULL; } @@ -90,7 +105,7 @@ struct db_context *db; struct sessionid_traverse_state state; - db = session_db_ctx(); + db = session_db_ctx_readonly(); if (db == NULL) { return -1; } @@ -132,7 +147,7 @@ struct db_context *db; struct sessionid_traverse_read_state state; - db = session_db_ctx(); + db = session_db_ctx_readonly(); if (db == NULL) { return -1; }