r22894: don't send a 2nd request before the last one returned (at least with
authorStefan Metzmacher <metze@samba.org>
Tue, 15 May 2007 10:50:25 +0000 (10:50 +0000)
committerStefan Metzmacher <metze@samba.org>
Tue, 15 May 2007 10:50:25 +0000 (10:50 +0000)
STATUS_PENDING) otherwise longhorn beta3 just drops the connection

metze

source/torture/smb2/notify.c

index 003f6d6cd6f6e86996f3c3af65fa8c7b9794f0aa..6059628a081fbd6506354230f64da7c51799e2bc 100644 (file)
@@ -27,6 +27,9 @@
 #include "torture/torture.h"
 #include "torture/smb2/proto.h"
 
+#include "libcli/raw/libcliraw.h"
+#include "lib/events/events.h"
+
 #define CHECK_STATUS(status, correct) do { \
        if (!NT_STATUS_EQUAL(status, correct)) { \
                printf("(%s) Incorrect status %s - should be %s\n", \
@@ -71,6 +74,12 @@ static BOOL test_valid_request(TALLOC_CTX *mem_ctx, struct smb2_tree *tree)
        n.in.unknown            = 0x00000000;
        req = smb2_notify_send(tree, &n);
 
+       while (!req->cancel.can_cancel && req->state <= SMB2_REQUEST_RECV) {
+               if (event_loop_once(req->transport->socket->event.ctx) != 0) {
+                       break;
+               }
+       }
+
        status = torture_setup_complex_file(tree, FNAME);
        CHECK_STATUS(status, NT_STATUS_OK);
 
@@ -87,6 +96,12 @@ static BOOL test_valid_request(TALLOC_CTX *mem_ctx, struct smb2_tree *tree)
        n.in.buffer_size        = 0x00000000;
        req = smb2_notify_send(tree, &n);
 
+       while (!req->cancel.can_cancel && req->state <= SMB2_REQUEST_RECV) {
+               if (event_loop_once(req->transport->socket->event.ctx) != 0) {
+                       break;
+               }
+       }
+
        status = torture_setup_complex_file(tree, FNAME);
        CHECK_STATUS(status, NT_STATUS_OK);
 
@@ -100,6 +115,12 @@ static BOOL test_valid_request(TALLOC_CTX *mem_ctx, struct smb2_tree *tree)
        n.in.buffer_size        = 0x00080000;
        req = smb2_notify_send(tree, &n);
 
+       while (!req->cancel.can_cancel && req->state <= SMB2_REQUEST_RECV) {
+               if (event_loop_once(req->transport->socket->event.ctx) != 0) {
+                       break;
+               }
+       }
+
        status = torture_setup_complex_file(tree, FNAME);
        CHECK_STATUS(status, NT_STATUS_OK);
 
@@ -126,6 +147,12 @@ static BOOL test_valid_request(TALLOC_CTX *mem_ctx, struct smb2_tree *tree)
        n.in.unknown            = 0x00000000;
        req = smb2_notify_send(tree, &n);
 
+       while (!req->cancel.can_cancel && req->state <= SMB2_REQUEST_RECV) {
+               if (event_loop_once(req->transport->socket->event.ctx) != 0) {
+                       break;
+               }
+       }
+
        status = torture_setup_complex_file(tree, FNAME);
        CHECK_STATUS(status, NT_STATUS_OK);
 
@@ -134,6 +161,11 @@ static BOOL test_valid_request(TALLOC_CTX *mem_ctx, struct smb2_tree *tree)
 
        n.in.buffer_size        = 0x00080000;
        req = smb2_notify_send(tree, &n);
+       while (!req->cancel.can_cancel && req->state <= SMB2_REQUEST_RECV) {
+               if (event_loop_once(req->transport->socket->event.ctx) != 0) {
+                       break;
+               }
+       }
 
        status = torture_setup_complex_file(tree, FNAME);
        CHECK_STATUS(status, NT_STATUS_OK);