--- samba-3.6.12/source3/smbd/smb2_server.c.orig 2013-03-26 17:37:30.003228403 -0700 +++ samba-3.6.12/source3/smbd/smb2_server.c 2013-03-26 17:38:44.139582046 -0700 @@ -941,28 +941,13 @@ NTSTATUS smbd_smb2_request_pending_queue return NT_STATUS_OK; } - if (req->in.vector_count > i + 3) { - /* - * We're trying to go async in a compound - * request chain. This is not allowed. - * Cancel the outstanding request. - */ - bool ok = tevent_req_cancel(req->subreq); - if (ok) { - return NT_STATUS_OK; - } - TALLOC_FREE(req->subreq); - return smbd_smb2_request_error(req, - NT_STATUS_INTERNAL_ERROR); - } - if (DEBUGLEVEL >= 10) { dbgtext("smbd_smb2_request_pending_queue: req->current_idx = %u\n", (unsigned int)req->current_idx ); print_req_vectors(req); } - if (req->out.vector_count > 4) { + if (req->out.vector_count > 4 && req->current_idx > 1) { /* This is a compound reply. We * must do an interim response * followed by the async response