r2443: check return code of event_loop_once() to catch thet cases where the server
authorStefan Metzmacher <metze@samba.org>
Mon, 20 Sep 2004 10:40:11 +0000 (10:40 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:58:54 +0000 (12:58 -0500)
closes the connetion and we got EBADF from select() and event_loop_once() fails

metze
(This used to be commit 9c0e50a6f3d628156b4543d5ded89e06be696f64)

source4/libcli/raw/rawrequest.c
source4/librpc/rpc/dcerpc.c
source4/torture/rpc/echo.c
source4/torture/rpc/netlogon.c

index 51c0c0b925aad8354d8a1802cfabe810e07b99ff..6536af307244779c02c75d218535a9fb9b1b46ff 100644 (file)
@@ -285,7 +285,9 @@ BOOL smbcli_request_receive(struct smbcli_request *req)
 
        /* keep receiving packets until this one is replied to */
        while (req->state <= SMBCLI_REQUEST_RECV) {
-               event_loop_once(req->transport->event.ctx);
+               if (event_loop_once(req->transport->event.ctx) != 0) {
+                       return False;
+               }
        }
 
        return req->state == SMBCLI_REQUEST_DONE;
index a4f93973f7fa066e265808fb8c5f2b43ecf67e40..99051e75b6a5b0f789b9a6e7bfff86f43f0da6bf 100644 (file)
@@ -436,7 +436,9 @@ static NTSTATUS full_request(struct dcerpc_pipe *p,
 
        while (NT_STATUS_IS_OK(state->status) && state->reply_blob) {
                struct event_context *ctx = p->transport.event_context(p);
-               event_loop_once(ctx);
+               if (event_loop_once(ctx) != 0) {
+                       return NT_STATUS_CONNECTION_DISCONNECTED;
+               }
        }
 
        return state->status;
@@ -882,7 +884,9 @@ NTSTATUS dcerpc_request_recv(struct rpc_request *req,
 
        while (req->state == RPC_REQUEST_PENDING) {
                struct event_context *ctx = dcerpc_event_context(req->p);
-               event_loop_once(ctx);
+               if (event_loop_once(ctx) != 0) {
+                       return NT_STATUS_CONNECTION_DISCONNECTED;
+               }
        }
        *stub_data = req->payload;
        status = req->status;
index 925b483288ef391f19de22df868261c129e6c47b..43c794e040ed8a28112e37f08e59ba26a2b8f926 100644 (file)
@@ -237,7 +237,9 @@ static BOOL test_sleep(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx)
 
        ctx = dcerpc_event_context(p);
        while (total_done < ASYNC_COUNT) {
-               event_loop_once(ctx);
+               if (event_loop_once(ctx) != 0) {
+                       return False;
+               }
                for (i=0;i<ASYNC_COUNT;i++) {
                        if (done[i] == 0 && req[i]->state == RPC_REQUEST_DONE) {
                                total_done++;
index fba39c14c9e5f8710560eb70f5ab15321f721135..6e4f85be4025befeadb474ff0c9208ab9c72aa84 100644 (file)
@@ -1706,7 +1706,9 @@ static BOOL test_GetDomainInfo_async(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx)
 
                /* even with this flush per request a w2k3 server seems to 
                   clag with multiple outstanding requests. bleergh. */
-               event_loop_once(dcerpc_event_context(p));
+               if (event_loop_once(dcerpc_event_context(p)) != 0) {
+                       return False;
+               }
        }
 
        for (i=0;i<ASYNC_COUNT;i++) {