s3/smbd: update some more DEBUG macros in smbd_smb2_create_send
[nivanova/samba-autobuild/.git] / source3 / smbd / smbXsrv_session.c
index 51668c22a472821eb782e0b2d7cade3427450343..f84d2a94ce1d60900126e992359e7cf994c3055a 100644 (file)
@@ -21,6 +21,7 @@
 #include "includes.h"
 #include "system/filesys.h"
 #include <tevent.h>
+#include "lib/util/server_id.h"
 #include "smbd/smbd.h"
 #include "smbd/globals.h"
 #include "dbwrap/dbwrap.h"
@@ -53,9 +54,10 @@ struct smbXsrv_session_table {
 
 static struct db_context *smbXsrv_session_global_db_ctx = NULL;
 
-NTSTATUS smbXsrv_session_global_init(void)
+NTSTATUS smbXsrv_session_global_init(struct messaging_context *msg_ctx)
 {
        char *global_path = NULL;
+       struct db_context *backend = NULL;
        struct db_context *db_ctx = NULL;
 
        if (smbXsrv_session_global_db_ctx != NULL) {
@@ -70,16 +72,16 @@ NTSTATUS smbXsrv_session_global_init(void)
                return NT_STATUS_NO_MEMORY;
        }
 
-       db_ctx = db_open(NULL, global_path,
-                        0, /* hash_size */
-                        TDB_DEFAULT |
-                        TDB_CLEAR_IF_FIRST |
-                        TDB_INCOMPATIBLE_HASH,
-                        O_RDWR | O_CREAT, 0600,
-                        DBWRAP_LOCK_ORDER_1,
-                        DBWRAP_FLAG_NONE);
+       backend = db_open(NULL, global_path,
+                         0, /* hash_size */
+                         TDB_DEFAULT |
+                         TDB_CLEAR_IF_FIRST |
+                         TDB_INCOMPATIBLE_HASH,
+                         O_RDWR | O_CREAT, 0600,
+                         DBWRAP_LOCK_ORDER_1,
+                         DBWRAP_FLAG_NONE);
        TALLOC_FREE(global_path);
-       if (db_ctx == NULL) {
+       if (backend == NULL) {
                NTSTATUS status;
 
                status = map_nt_error_from_unix_common(errno);
@@ -87,6 +89,12 @@ NTSTATUS smbXsrv_session_global_init(void)
                return status;
        }
 
+       db_ctx = db_open_watched(NULL, backend, server_messaging_context());
+       if (db_ctx == NULL) {
+               TALLOC_FREE(backend);
+               return NT_STATUS_NO_MEMORY;
+       }
+
        smbXsrv_session_global_db_ctx = db_ctx;
 
        return NT_STATUS_OK;
@@ -242,7 +250,7 @@ static NTSTATUS smbXsrv_session_table_init(struct smbXsrv_connection *conn,
        table->local.highest_id = highest_id;
        table->local.max_sessions = max_sessions;
 
-       status = smbXsrv_session_global_init();
+       status = smbXsrv_session_global_init(client->msg_ctx);
        if (!NT_STATUS_IS_OK(status)) {
                TALLOC_FREE(table);
                return status;
@@ -250,8 +258,6 @@ static NTSTATUS smbXsrv_session_table_init(struct smbXsrv_connection *conn,
 
        table->global.db_ctx = smbXsrv_session_global_db_ctx;
 
-       dbwrap_watch_db(table->global.db_ctx, client->msg_ctx);
-
        subreq = messaging_read_send(table, client->ev_ctx, client->msg_ctx,
                                     MSG_SMBXSRV_SESSION_CLOSE);
        if (subreq == NULL) {
@@ -1065,9 +1071,8 @@ static void smb2srv_session_close_previous_check(struct tevent_req *req)
                return;
        }
 
-       subreq = dbwrap_record_watch_send(state, state->ev,
-                                         state->db_rec, conn->msg_ctx,
-                                         (struct server_id){0});
+       subreq = dbwrap_watched_watch_send(state, state->ev, state->db_rec,
+                                          (struct server_id){0});
        if (tevent_req_nomem(subreq, req)) {
                TALLOC_FREE(state->db_rec);
                return;
@@ -1121,8 +1126,8 @@ static void smb2srv_session_close_previous_modified(struct tevent_req *subreq)
                struct smb2srv_session_close_previous_state);
        NTSTATUS status;
 
-       status = dbwrap_record_watch_recv(subreq, state, &state->db_rec, NULL,
-                                         NULL);
+       status = dbwrap_watched_watch_recv(subreq, state, &state->db_rec, NULL,
+                                          NULL);
        TALLOC_FREE(subreq);
        if (tevent_req_nterror(req, status)) {
                return;
@@ -1931,7 +1936,7 @@ NTSTATUS smbXsrv_session_global_traverse(
        };
 
        become_root();
-       status = smbXsrv_session_global_init();
+       status = smbXsrv_session_global_init(NULL);
        if (!NT_STATUS_IS_OK(status)) {
                unbecome_root();
                DEBUG(0, ("Failed to initialize session_global: %s\n",