* had been updated in dispatch, so that they need to be
* adapted again in reply.
*/
+ bool re_dispatching;
bool request_counters_updated;
uint64_t channel_generation;
"re-dispatching mid %llu\n",
(unsigned long long)mid ));
+ smb2req->re_dispatching = true;
status = smbd_smb2_request_dispatch(smb2req);
if (!NT_STATUS_IS_OK(status)) {
smbd_server_connection_terminate(smb2req->xconn,
bool update_open = false;
NTSTATUS status = NT_STATUS_OK;
+ if (!smb2req->re_dispatching) {
+ return NT_STATUS_OK;
+ }
+
SMB_ASSERT(!req->request_counters_updated);
if (xconn->protocol < PROTOCOL_SMB2_22) {
DO_PROFILE_INC(request);
- SMB_ASSERT(!req->request_counters_updated);
+ if (!smb2req->re_dispatching) {
+ SMB_ASSERT(!req->request_counters_updated);
+ }
/* TODO: verify more things */
/* MS-SMB2: 3.3.4.1 Sending Any Outgoing Message */
smbd_smb2_request_reply_update_counts(req);
+ req->re_dispatching = false;
if (req->do_encryption &&
(firsttf->iov_len == 0) &&