1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-02 09:47:23 +03:00

s4:smb_server/smb2: correctly implement related compound requests

We need to remember the session id and tree id.

metze
This commit is contained in:
Stefan Metzmacher 2011-10-31 15:23:00 +01:00
parent 95ca064103
commit 09d3df6e7e
2 changed files with 15 additions and 0 deletions

View File

@ -69,6 +69,9 @@ struct smb2srv_request *smb2srv_init_request(struct smbsrv_connection *smb_conn)
req->smb_conn = smb_conn;
req->chained_session_id = UINT64_MAX;
req->chained_tree_id = UINT32_MAX;
talloc_set_destructor(req, smb2srv_request_destructor);
return req;
@ -233,6 +236,8 @@ static void smb2srv_chain_reply(struct smb2srv_request *p_req)
sizeof(req->_chained_file_handle));
req->chained_file_handle = req->_chained_file_handle;
}
req->chained_session_id = p_req->chained_session_id;
req->chained_tree_id = p_req->chained_tree_id;
req->chain_status = p_req->chain_status;
}
@ -342,9 +347,17 @@ static NTSTATUS smb2srv_reply(struct smb2srv_request *req)
req->smb_conn->highest_smb2_seqnum = req->seqnum;
}
if (flags & SMB2_HDR_FLAG_CHAINED) {
uid = req->chained_session_id;
tid = req->chained_tree_id;
}
req->session = smbsrv_session_find(req->smb_conn, uid, req->request_time);
req->tcon = smbsrv_smb2_tcon_find(req->session, tid, req->request_time);
req->chained_session_id = uid;
req->chained_tree_id = tid;
errno = 0;
/* supporting signing is mandatory in SMB2, and is per-packet. So we

View File

@ -64,6 +64,8 @@ struct smb2srv_request {
/* chained file handle */
uint8_t _chained_file_handle[16];
uint8_t *chained_file_handle;
uint64_t chained_session_id;
uint32_t chained_tree_id;
bool is_signed;