/* The following definitions come from lib/sessionid_tdb.c */
struct sessionid;
bool sessionid_init(void);
+bool sessionid_init_readonly(void);
struct db_record *sessionid_fetch_record(TALLOC_CTX *mem_ctx, const char *key);
int sessionid_traverse(int (*fn)(struct db_record *rec, const char *key,
struct sessionid *session,
return session_db_ctx_ptr;
}
-static struct db_context *session_db_ctx_init(void)
+static struct db_context *session_db_ctx_init(bool readonly)
{
session_db_ctx_ptr = db_open(NULL, lock_path("sessionid.tdb"), 0,
TDB_CLEAR_IF_FIRST|TDB_DEFAULT|TDB_INCOMPATIBLE_HASH,
- O_RDWR | O_CREAT, 0644);
+ readonly ? O_RDONLY : O_RDWR | O_CREAT, 0644);
return session_db_ctx_ptr;
}
bool sessionid_init(void)
{
- if (session_db_ctx_init() == NULL) {
+ if (session_db_ctx_init(false) == NULL) {
+ DEBUG(1,("session_init: failed to open sessionid tdb\n"));
+ return False;
+ }
+
+ return True;
+}
+
+bool sessionid_init_readonly(void)
+{
+ if (session_db_ctx_init(true) == NULL) {
DEBUG(1,("session_init: failed to open sessionid tdb\n"));
return False;
}
{NULL, NULL, 0, NULL, NULL}
};
- if (!sessionid_init()) {
+ if (!sessionid_init_readonly()) {
d_printf("failed to open sessionid.tdb\n");
return -1;
}
}
- if (!sessionid_init()) {
+ if (!sessionid_init_readonly()) {
fprintf(stderr, "Can't open sessionid.tdb\n");
ret = -1;
goto done;