diff options
author | Stefan Metzmacher <metze@samba.org> | 2011-12-12 11:11:55 +0100 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2011-12-12 14:35:42 +0100 |
commit | 8b2b7d1c87b475b61ef5259cee0ae77afe47a667 (patch) | |
tree | b69e4278b3ddc008de19c06d290e6b247f406239 | |
parent | 8581f0b429e225406ab09e83be20e732c1424fca (diff) | |
download | samba-8b2b7d1c87b475b61ef5259cee0ae77afe47a667.tar.gz samba-8b2b7d1c87b475b61ef5259cee0ae77afe47a667.tar.bz2 samba-8b2b7d1c87b475b61ef5259cee0ae77afe47a667.zip |
s3:smbd: remember the smbd_server_connection on pending_message_list
metze
-rw-r--r-- | source3/include/smb.h | 1 | ||||
-rw-r--r-- | source3/smbd/process.c | 10 |
2 files changed, 7 insertions, 4 deletions
diff --git a/source3/include/smb.h b/source3/include/smb.h index d3a27e9f73..2dad790f1b 100644 --- a/source3/include/smb.h +++ b/source3/include/smb.h @@ -532,6 +532,7 @@ struct interface { struct pending_message_list { struct pending_message_list *next, *prev; struct timeval request_time; /* When was this first issued? */ + struct smbd_server_connection *sconn; struct timed_event *te; struct smb_perfcount_data pcd; uint32_t seqnum; diff --git a/source3/smbd/process.c b/source3/smbd/process.c index 073ee39577..c95c1f07ef 100644 --- a/source3/smbd/process.c +++ b/source3/smbd/process.c @@ -558,6 +558,7 @@ static void smbd_deferred_open_timer(struct event_context *ev, { struct pending_message_list *msg = talloc_get_type(private_data, struct pending_message_list); + struct smbd_server_connection *sconn = msg->sconn; TALLOC_CTX *mem_ctx = talloc_tos(); uint64_t mid = (uint64_t)SVAL(msg->buf.data,smb_mid); uint8_t *inbuf; @@ -578,14 +579,14 @@ static void smbd_deferred_open_timer(struct event_context *ev, * re-processed in error. */ msg->processed = true; - process_smb(smbd_server_conn, inbuf, + process_smb(sconn, inbuf, msg->buf.length, 0, msg->seqnum, msg->encrypted, &msg->pcd); /* If it's still there and was processed, remove it. */ - msg = get_deferred_open_message_smb(smbd_server_conn, mid); + msg = get_deferred_open_message_smb(sconn, mid); if (msg && msg->processed) { - remove_deferred_open_message_smb(smbd_server_conn, mid); + remove_deferred_open_message_smb(sconn, mid); } } @@ -608,6 +609,7 @@ static bool push_queued_message(struct smb_request *req, DEBUG(0,("push_message: malloc fail (1)\n")); return False; } + msg->sconn = req->sconn; msg->buf = data_blob_talloc(msg, req->inbuf, msg_len); if(msg->buf.data == NULL) { @@ -790,7 +792,7 @@ bool get_deferred_open_message_state(struct smb_request *smbreq, { struct pending_message_list *pml; - if (smbd_server_conn->using_smb2) { + if (smbreq->sconn->using_smb2) { return get_deferred_open_message_state_smb2(smbreq->smb2req, p_request_time, pp_state); |