From d20e968cff86eaad62e5fef8d3ee16f8767f8054 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Tue, 2 Aug 2011 17:13:23 +0200 Subject: s3: Move deferred_open_queue to smbd_server_connection --- source3/smbd/globals.c | 1 - source3/smbd/globals.h | 6 ++++-- source3/smbd/process.c | 15 ++++++++------- 3 files changed, 12 insertions(+), 10 deletions(-) (limited to 'source3') diff --git a/source3/smbd/globals.c b/source3/smbd/globals.c index bf36dcb71f..8cc1a31aec 100644 --- a/source3/smbd/globals.c +++ b/source3/smbd/globals.c @@ -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; diff --git a/source3/smbd/globals.h b/source3/smbd/globals.h index 6d13e568d1..9e8059be19 100644 --- a/source3/smbd/globals.h +++ b/source3/smbd/globals.h @@ -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; diff --git a/source3/smbd/process.c b/source3/smbd/process.c index e87032b2f3..b105de7614 100644 --- a/source3/smbd/process.c +++ b/source3/smbd/process.c @@ -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; } -- cgit