summaryrefslogtreecommitdiff
path: root/source4
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2005-06-11 03:53:39 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:17:58 -0500
commit07b0d86121cf78e0f7407364240d8eb76bde8d80 (patch)
tree1ae46e0e2afda022e46b0432042c0438338bba6f /source4
parent6412e8eeae6b4abfb65514b00c49419a7cb97b1a (diff)
downloadsamba-07b0d86121cf78e0f7407364240d8eb76bde8d80.tar.gz
samba-07b0d86121cf78e0f7407364240d8eb76bde8d80.tar.bz2
samba-07b0d86121cf78e0f7407364240d8eb76bde8d80.zip
r7483: ensure we try reading from a socket if epoll says we can, and don't
just do the write. This is needed because the write could return -1/EAGAIN for dgram sockets, if the socket buffer is nearly full. The epoll loop then goes on forever. This was causing some failures in 'make test' (This used to be commit b7fefe76a2d3c288611868f41d65af4e13ac460b)
Diffstat (limited to 'source4')
-rw-r--r--source4/libcli/cldap/cldap.c3
-rw-r--r--source4/libcli/dgram/dgramsocket.c3
-rw-r--r--source4/libcli/nbt/nbtsocket.c3
-rw-r--r--source4/libcli/wins/winsrepl.c1
4 files changed, 6 insertions, 4 deletions
diff --git a/source4/libcli/cldap/cldap.c b/source4/libcli/cldap/cldap.c
index a96906cf4c..41d5f1a06e 100644
--- a/source4/libcli/cldap/cldap.c
+++ b/source4/libcli/cldap/cldap.c
@@ -222,7 +222,8 @@ static void cldap_socket_handler(struct event_context *ev, struct fd_event *fde,
struct cldap_socket *cldap = talloc_get_type(private, struct cldap_socket);
if (flags & EVENT_FD_WRITE) {
cldap_socket_send(cldap);
- } else if (flags & EVENT_FD_READ) {
+ }
+ if (flags & EVENT_FD_READ) {
cldap_socket_recv(cldap);
}
}
diff --git a/source4/libcli/dgram/dgramsocket.c b/source4/libcli/dgram/dgramsocket.c
index 88eed5c10b..aff9d2e182 100644
--- a/source4/libcli/dgram/dgramsocket.c
+++ b/source4/libcli/dgram/dgramsocket.c
@@ -146,7 +146,8 @@ static void dgm_socket_handler(struct event_context *ev, struct fd_event *fde,
struct nbt_dgram_socket);
if (flags & EVENT_FD_WRITE) {
dgm_socket_send(dgmsock);
- } else if (flags & EVENT_FD_READ) {
+ }
+ if (flags & EVENT_FD_READ) {
dgm_socket_recv(dgmsock);
}
}
diff --git a/source4/libcli/nbt/nbtsocket.c b/source4/libcli/nbt/nbtsocket.c
index f600afb79f..0401e68af8 100644
--- a/source4/libcli/nbt/nbtsocket.c
+++ b/source4/libcli/nbt/nbtsocket.c
@@ -292,7 +292,8 @@ static void nbt_name_socket_handler(struct event_context *ev, struct fd_event *f
struct nbt_name_socket);
if (flags & EVENT_FD_WRITE) {
nbt_name_socket_send(nbtsock);
- } else if (flags & EVENT_FD_READ) {
+ }
+ if (flags & EVENT_FD_READ) {
nbt_name_socket_recv(nbtsock);
}
}
diff --git a/source4/libcli/wins/winsrepl.c b/source4/libcli/wins/winsrepl.c
index 65b713202f..732b597c53 100644
--- a/source4/libcli/wins/winsrepl.c
+++ b/source4/libcli/wins/winsrepl.c
@@ -200,7 +200,6 @@ static void wrepl_handler(struct event_context *ev, struct fd_event *fde,
struct wrepl_socket);
if (flags & EVENT_FD_WRITE) {
wrepl_handler_send(wrepl_socket);
- return;
}
if (flags & EVENT_FD_READ) {
wrepl_handler_recv(wrepl_socket);