diff options
| author | Stefan Metzmacher <metze@samba.org> | 2014-06-10 13:24:50 +0200 |
|---|---|---|
| committer | Michael Adam <obnox@samba.org> | 2014-08-06 09:51:11 +0200 |
| commit | 92e96bedfb29101c1b0df6aed174b5ecf2b6001d (patch) | |
| tree | d188e6fe5565fe50f556f574d95a2d1db92618b8 /source3 | |
| parent | 36e34842606b312a0ca338667797b6c00df50de7 (diff) | |
s3:smb2_server: move sconn->smb2.requests to xconn->smb2.requests
This prepares the structures for multi-channel support.
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Michael Adam <obnox@samba.org>
Diffstat (limited to 'source3')
| -rw-r--r-- | source3/smbd/globals.h | 3 | ||||
| -rw-r--r-- | source3/smbd/smb2_create.c | 3 | ||||
| -rw-r--r-- | source3/smbd/smb2_glue.c | 3 | ||||
| -rw-r--r-- | source3/smbd/smb2_lock.c | 9 | ||||
| -rw-r--r-- | source3/smbd/smb2_server.c | 10 | ||||
| -rw-r--r-- | source3/smbd/smb2_sesssetup.c | 7 | ||||
| -rw-r--r-- | source3/smbd/smb2_tcon.c | 3 |
7 files changed, 25 insertions, 13 deletions
diff --git a/source3/smbd/globals.h b/source3/smbd/globals.h index a32f7b41ba..4e275eb940 100644 --- a/source3/smbd/globals.h +++ b/source3/smbd/globals.h @@ -497,6 +497,8 @@ struct smbXsrv_connection { uint32_t max_read; uint32_t max_write; } server; + + struct smbd_smb2_request *requests; } smb2; uint64_t smbd_idle_profstamp; @@ -841,7 +843,6 @@ struct smbd_server_connection { struct tevent_timer *brl_timeout; bool blocking_lock_unlock_state; } locks; - struct smbd_smb2_request *requests; } smb2; /* diff --git a/source3/smbd/smb2_create.c b/source3/smbd/smb2_create.c index d22df4da34..0c27a01058 100644 --- a/source3/smbd/smb2_create.c +++ b/source3/smbd/smb2_create.c @@ -1213,9 +1213,10 @@ bool get_deferred_open_message_state_smb2(struct smbd_smb2_request *smb2req, static struct smbd_smb2_request *find_open_smb2req( struct smbd_server_connection *sconn, uint64_t mid) { + struct smbXsrv_connection *xconn = sconn->conn; struct smbd_smb2_request *smb2req; - for (smb2req = sconn->smb2.requests; smb2req; smb2req = smb2req->next) { + for (smb2req = xconn->smb2.requests; smb2req; smb2req = smb2req->next) { uint64_t message_id; if (smb2req->subreq == NULL) { /* This message has been processed. */ diff --git a/source3/smbd/smb2_glue.c b/source3/smbd/smb2_glue.c index 54135b5585..69ff7bba6a 100644 --- a/source3/smbd/smb2_glue.c +++ b/source3/smbd/smb2_glue.c @@ -77,9 +77,10 @@ size_t smbd_smb2_unread_bytes(struct smbd_smb2_request *req) void remove_smb2_chained_fsp(files_struct *fsp) { struct smbd_server_connection *sconn = fsp->conn->sconn; + struct smbXsrv_connection *xconn = sconn->conn; struct smbd_smb2_request *smb2req; - for (smb2req = sconn->smb2.requests; smb2req; smb2req = smb2req->next) { + for (smb2req = xconn->smb2.requests; smb2req; smb2req = smb2req->next) { if (smb2req->compat_chain_fsp == fsp) { smb2req->compat_chain_fsp = NULL; } diff --git a/source3/smbd/smb2_lock.c b/source3/smbd/smb2_lock.c index 4c5b61ee2c..8e1eb40dca 100644 --- a/source3/smbd/smb2_lock.c +++ b/source3/smbd/smb2_lock.c @@ -468,13 +468,14 @@ struct blocking_lock_record *get_pending_smb2req_blr(struct smbd_smb2_request *s static bool recalc_smb2_brl_timeout(struct smbd_server_connection *sconn) { + struct smbXsrv_connection *xconn = sconn->conn; struct smbd_smb2_request *smb2req; struct timeval next_timeout = timeval_zero(); int max_brl_timeout = lp_parm_int(-1, "brl", "recalctime", 5); TALLOC_FREE(sconn->smb2.locks.brl_timeout); - for (smb2req = sconn->smb2.requests; smb2req; smb2req = smb2req->next) { + for (smb2req = xconn->smb2.requests; smb2req; smb2req = smb2req->next) { struct blocking_lock_record *blr = get_pending_smb2req_blr(smb2req); if (!blr) { @@ -774,9 +775,10 @@ static void reprocess_blocked_smb2_lock(struct smbd_smb2_request *smb2req, void process_blocking_lock_queue_smb2( struct smbd_server_connection *sconn, struct timeval tv_curr) { + struct smbXsrv_connection *xconn = sconn->conn; struct smbd_smb2_request *smb2req, *nextreq; - for (smb2req = sconn->smb2.requests; smb2req; smb2req = nextreq) { + for (smb2req = xconn->smb2.requests; smb2req; smb2req = nextreq) { const uint8_t *inhdr; nextreq = smb2req->next; @@ -808,9 +810,10 @@ void cancel_pending_lock_requests_by_fid_smb2(files_struct *fsp, enum file_close_type close_type) { struct smbd_server_connection *sconn = fsp->conn->sconn; + struct smbXsrv_connection *xconn = sconn->conn; struct smbd_smb2_request *smb2req, *nextreq; - for (smb2req = sconn->smb2.requests; smb2req; smb2req = nextreq) { + for (smb2req = xconn->smb2.requests; smb2req; smb2req = nextreq) { struct smbd_smb2_lock_state *state = NULL; files_struct *fsp_curr = NULL; struct blocking_lock_record *blr = NULL; diff --git a/source3/smbd/smb2_server.c b/source3/smbd/smb2_server.c index b48d1819ba..b963b949b0 100644 --- a/source3/smbd/smb2_server.c +++ b/source3/smbd/smb2_server.c @@ -938,6 +938,7 @@ DATA_BLOB smbd_smb2_generate_outbody(struct smbd_smb2_request *req, size_t size) static NTSTATUS smbd_smb2_request_setup_out(struct smbd_smb2_request *req) { + struct smbXsrv_connection *xconn = req->sconn->conn; TALLOC_CTX *mem_ctx; struct iovec *vector; int count; @@ -1035,7 +1036,7 @@ static NTSTATUS smbd_smb2_request_setup_out(struct smbd_smb2_request *req) /* setup the length of the NBT packet */ smb2_setup_nbt_length(req->out.vector, req->out.vector_count); - DLIST_ADD_END(req->sconn->smb2.requests, req, struct smbd_smb2_request *); + DLIST_ADD_END(xconn->smb2.requests, req, struct smbd_smb2_request *); return NT_STATUS_OK; } @@ -1613,6 +1614,7 @@ static void smbd_smb2_request_pending_timer(struct tevent_context *ev, static NTSTATUS smbd_smb2_request_process_cancel(struct smbd_smb2_request *req) { struct smbd_server_connection *sconn = req->sconn; + struct smbXsrv_connection *xconn = sconn->conn; struct smbd_smb2_request *cur; const uint8_t *inhdr; uint32_t flags; @@ -1630,10 +1632,10 @@ static NTSTATUS smbd_smb2_request_process_cancel(struct smbd_smb2_request *req) * we don't need the request anymore * cancel requests never have a response */ - DLIST_REMOVE(req->sconn->smb2.requests, req); + DLIST_REMOVE(xconn->smb2.requests, req); TALLOC_FREE(req); - for (cur = sconn->smb2.requests; cur; cur = cur->next) { + for (cur = xconn->smb2.requests; cur; cur = cur->next) { const uint8_t *outhdr; uint64_t message_id; uint64_t async_id; @@ -2511,7 +2513,7 @@ static NTSTATUS smbd_smb2_request_reply(struct smbd_smb2_request *req) * We're done with this request - * move it off the "being processed" queue. */ - DLIST_REMOVE(req->sconn->smb2.requests, req); + DLIST_REMOVE(conn->smb2.requests, req); req->queue_entry.mem_ctx = req; req->queue_entry.vector = req->out.vector; diff --git a/source3/smbd/smb2_sesssetup.c b/source3/smbd/smb2_sesssetup.c index 391b1003fa..d4f0d793a5 100644 --- a/source3/smbd/smb2_sesssetup.c +++ b/source3/smbd/smb2_sesssetup.c @@ -457,6 +457,7 @@ static int pp_self_ref_destructor(struct smbd_smb2_session_setup_state **pp_stat static int smbd_smb2_session_setup_state_destructor(struct smbd_smb2_session_setup_state *state) { + struct smbXsrv_connection *xconn; struct smbd_smb2_request *preq; /* @@ -478,8 +479,9 @@ static int smbd_smb2_session_setup_state_destructor(struct smbd_smb2_session_set * Ensure that any outstanding requests don't also refer * to it. */ + xconn = state->smb2req->sconn->conn; - for (preq = state->smb2req->sconn->smb2.requests; preq != NULL; preq = preq->next) { + for (preq = xconn->smb2.requests; preq != NULL; preq = preq->next) { if (preq == state->smb2req) { continue; } @@ -875,6 +877,7 @@ static struct tevent_req *smbd_smb2_logoff_send(TALLOC_CTX *mem_ctx, struct smbd_smb2_logout_state *state; struct tevent_req *subreq; struct smbd_smb2_request *preq; + struct smbXsrv_connection *xconn = smb2req->sconn->conn; req = tevent_req_create(mem_ctx, &state, struct smbd_smb2_logout_state); @@ -893,7 +896,7 @@ static struct tevent_req *smbd_smb2_logoff_send(TALLOC_CTX *mem_ctx, */ smb2req->session->status = NT_STATUS_USER_SESSION_DELETED; - for (preq = smb2req->sconn->smb2.requests; preq != NULL; preq = preq->next) { + for (preq = xconn->smb2.requests; preq != NULL; preq = preq->next) { if (preq == smb2req) { /* Can't cancel current request. */ continue; diff --git a/source3/smbd/smb2_tcon.c b/source3/smbd/smb2_tcon.c index 93f62fdcb1..6289427bf9 100644 --- a/source3/smbd/smb2_tcon.c +++ b/source3/smbd/smb2_tcon.c @@ -498,6 +498,7 @@ static struct tevent_req *smbd_smb2_tdis_send(TALLOC_CTX *mem_ctx, struct smbd_smb2_tdis_state *state; struct tevent_req *subreq; struct smbd_smb2_request *preq; + struct smbXsrv_connection *xconn = smb2req->sconn->conn; req = tevent_req_create(mem_ctx, &state, struct smbd_smb2_tdis_state); @@ -516,7 +517,7 @@ static struct tevent_req *smbd_smb2_tdis_send(TALLOC_CTX *mem_ctx, */ smb2req->tcon->status = NT_STATUS_NETWORK_NAME_DELETED; - for (preq = smb2req->sconn->smb2.requests; preq != NULL; preq = preq->next) { + for (preq = xconn->smb2.requests; preq != NULL; preq = preq->next) { if (preq == smb2req) { /* Can't cancel current request. */ continue; |
