s3: Move deferred_open_queue to smbd_server_connection
authorVolker Lendecke <vl@samba.org>
Tue, 2 Aug 2011 15:13:23 +0000 (17:13 +0200)
committerVolker Lendecke <vl@samba.org>
Tue, 2 Aug 2011 17:18:09 +0000 (19:18 +0200)
source3/smbd/globals.c
source3/smbd/globals.h
source3/smbd/process.c

index bf36dcb71f87d8137ecdfee40c107426e7bbde5d..8cc1a31aecf0dbb3d969d163617536549d85e52b 100644 (file)
@@ -65,7 +65,6 @@ time_t last_printer_reload_time = 0;
  structure to hold a linked list of queued messages.
  for processing.
 ****************************************************************************/
-struct pending_message_list *deferred_open_queue = NULL;
 uint32_t common_flags2 = FLAGS2_LONG_PATH_COMPONENTS|FLAGS2_32_BIT_ERROR_CODES|FLAGS2_EXTENDED_ATTRIBUTES;
 
 struct smb_srv_trans_enc_ctx *partial_srv_trans_enc_ctx = NULL;
index 6d13e568d189bcc05a58113d41ba6984a550528a..9e8059be19d760eae9477e5ec9868424ed4af3fd 100644 (file)
@@ -70,8 +70,6 @@ extern time_t last_printer_reload_time;
  structure to hold a linked list of queued messages.
  for processing.
 ****************************************************************************/
-struct pending_message_list;
-extern struct pending_message_list *deferred_open_queue;
 extern uint32_t common_flags2;
 
 struct smb_srv_trans_enc_ctx;
@@ -447,6 +445,7 @@ struct smbd_smb2_tcon {
        connection_struct *compat_conn;
 };
 
+struct pending_message_list;
 struct pending_auth_data;
 
 struct smbd_server_connection {
@@ -478,6 +477,9 @@ struct smbd_server_connection {
        /* number of open connections (tcons) */
        int num_tcons_open;
 
+       struct pending_message_list *deferred_open_queue;
+
+
        /* open directory handles. */
        struct {
                struct bitmap *dptr_bmap;
index e87032b2f3dff40fb3a1fff02a21975cdac72edc..b105de7614588afacb2b7109fe9ef461054f5118 100644 (file)
@@ -641,7 +641,8 @@ static bool push_queued_message(struct smb_request *req,
                return false;
        }
 
-       DLIST_ADD_END(deferred_open_queue, msg, struct pending_message_list *);
+       DLIST_ADD_END(req->sconn->deferred_open_queue, msg,
+                     struct pending_message_list *);
 
        DEBUG(10,("push_message: pushed message length %u on "
                  "deferred_open_queue\n", (unsigned int)msg_len));
@@ -663,13 +664,13 @@ void remove_deferred_open_message_smb(struct smbd_server_connection *sconn,
                return;
        }
 
-       for (pml = deferred_open_queue; pml; pml = pml->next) {
+       for (pml = sconn->deferred_open_queue; pml; pml = pml->next) {
                if (mid == (uint64_t)SVAL(pml->buf.data,smb_mid)) {
                        DEBUG(10,("remove_deferred_open_message_smb: "
                                  "deleting mid %llu len %u\n",
                                  (unsigned long long)mid,
                                  (unsigned int)pml->buf.length ));
-                       DLIST_REMOVE(deferred_open_queue, pml);
+                       DLIST_REMOVE(sconn->deferred_open_queue, pml);
                        TALLOC_FREE(pml);
                        return;
                }
@@ -692,7 +693,7 @@ void schedule_deferred_open_message_smb(struct smbd_server_connection *sconn,
                return;
        }
 
-       for (pml = deferred_open_queue; pml; pml = pml->next) {
+       for (pml = sconn->deferred_open_queue; pml; pml = pml->next) {
                uint64_t msg_mid = (uint64_t)SVAL(pml->buf.data,smb_mid);
 
                DEBUG(10,("schedule_deferred_open_message_smb: [%d] "
@@ -730,7 +731,7 @@ void schedule_deferred_open_message_smb(struct smbd_server_connection *sconn,
 
                        TALLOC_FREE(pml->te);
                        pml->te = te;
-                       DLIST_PROMOTE(deferred_open_queue, pml);
+                       DLIST_PROMOTE(sconn->deferred_open_queue, pml);
                        return;
                }
        }
@@ -752,7 +753,7 @@ bool open_was_deferred(struct smbd_server_connection *sconn, uint64_t mid)
                return open_was_deferred_smb2(sconn, mid);
        }
 
-       for (pml = deferred_open_queue; pml; pml = pml->next) {
+       for (pml = sconn->deferred_open_queue; pml; pml = pml->next) {
                if (((uint64_t)SVAL(pml->buf.data,smb_mid)) == mid && !pml->processed) {
                        return True;
                }
@@ -769,7 +770,7 @@ static struct pending_message_list *get_deferred_open_message_smb(
 {
        struct pending_message_list *pml;
 
-       for (pml = deferred_open_queue; pml; pml = pml->next) {
+       for (pml = sconn->deferred_open_queue; pml; pml = pml->next) {
                if (((uint64_t)SVAL(pml->buf.data,smb_mid)) == mid) {
                        return pml;
                }