avoid SMB_ASSERT(!req->request_counters_updated); on re-dispatched requests
[metze/samba/wip.git] / source3 / smbd / smb2_server.c
index 5a98a2e82d4d4e21b9f07ed4d28f966dffe15621..6871d98e4384ba13eafa60c6dcc1cbabe93c25c5 100644 (file)
@@ -2210,6 +2210,10 @@ static NTSTATUS smbd_smb2_request_dispatch_update_counts(
        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) {
@@ -2345,7 +2349,9 @@ NTSTATUS smbd_smb2_request_dispatch(struct smbd_smb2_request *req)
 
        DO_PROFILE_INC(request);
 
-       SMB_ASSERT(!req->request_counters_updated);
+       if (!smb2req->re_dispatching) {
+               SMB_ASSERT(!req->request_counters_updated);
+       }
 
        /* TODO: verify more things */
 
@@ -2851,6 +2857,7 @@ static NTSTATUS smbd_smb2_request_reply(struct smbd_smb2_request *req)
 
        /* 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) &&