summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2004-09-20 10:40:11 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 12:58:54 -0500
commit6b9b169c2746c0223f249700d7ff8a70feb8da62 (patch)
treef7064839446cccbbf5aa5a026677dc9be0145d21
parent8f85b3f77132279d8e79ff9a8a213515a3845fe0 (diff)
downloadsamba-6b9b169c2746c0223f249700d7ff8a70feb8da62.tar.gz
samba-6b9b169c2746c0223f249700d7ff8a70feb8da62.tar.bz2
samba-6b9b169c2746c0223f249700d7ff8a70feb8da62.zip
r2443: check return code of event_loop_once() to catch thet cases where the server
closes the connetion and we got EBADF from select() and event_loop_once() fails metze (This used to be commit 9c0e50a6f3d628156b4543d5ded89e06be696f64)
-rw-r--r--source4/libcli/raw/rawrequest.c4
-rw-r--r--source4/librpc/rpc/dcerpc.c8
-rw-r--r--source4/torture/rpc/echo.c4
-rw-r--r--source4/torture/rpc/netlogon.c4
4 files changed, 15 insertions, 5 deletions
diff --git a/source4/libcli/raw/rawrequest.c b/source4/libcli/raw/rawrequest.c
index 51c0c0b925..6536af3072 100644
--- a/source4/libcli/raw/rawrequest.c
+++ b/source4/libcli/raw/rawrequest.c
@@ -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;
diff --git a/source4/librpc/rpc/dcerpc.c b/source4/librpc/rpc/dcerpc.c
index a4f93973f7..99051e75b6 100644
--- a/source4/librpc/rpc/dcerpc.c
+++ b/source4/librpc/rpc/dcerpc.c
@@ -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;
diff --git a/source4/torture/rpc/echo.c b/source4/torture/rpc/echo.c
index 925b483288..43c794e040 100644
--- a/source4/torture/rpc/echo.c
+++ b/source4/torture/rpc/echo.c
@@ -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++;
diff --git a/source4/torture/rpc/netlogon.c b/source4/torture/rpc/netlogon.c
index fba39c14c9..6e4f85be40 100644
--- a/source4/torture/rpc/netlogon.c
+++ b/source4/torture/rpc/netlogon.c
@@ -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++) {