about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPeter Stephenson <pws@zsh.org>2015-08-10 13:44:12 +0100
committerPeter Stephenson <pws@zsh.org>2015-08-10 13:44:12 +0100
commitcbdb3cf9be7f0fb5a94e78c3f6fcd22805a57fab (patch)
tree3838043eb88fabfe917cd9407015b6d2f99c7844
parent9728f535e27548925b93981662844b3a2fe7dbfa (diff)
downloadzsh-cbdb3cf9be7f0fb5a94e78c3f6fcd22805a57fab.tar.gz
zsh-cbdb3cf9be7f0fb5a94e78c3f6fcd22805a57fab.tar.xz
zsh-cbdb3cf9be7f0fb5a94e78c3f6fcd22805a57fab.zip
not quite posted: check for error return before EINTR
-rw-r--r--ChangeLog3
-rw-r--r--Src/Modules/socket.c2
-rw-r--r--Src/Modules/tcp.c2
3 files changed, 5 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 909507cc6..4153f6a86 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2015-08-10  Peter Stephenson  <p.stephenson@samsung.com>
 
+	* not quite posted: Src/Modules/socket.c, Src/Modules/tcp.c:
+	check for error return before testing for EINTR.
+
 	* Joshua Krusell: 36039: Src/Modules/socket.c,
 	Src/Modules/tcp.c: Restart socket commands on EINTR.
 
diff --git a/Src/Modules/socket.c b/Src/Modules/socket.c
index 92d0a5035..65b87d7dd 100644
--- a/Src/Modules/socket.c
+++ b/Src/Modules/socket.c
@@ -193,7 +193,7 @@ bin_zsocket(char *nam, char **args, Options ops, UNUSED(int func))
 	len = sizeof(soun);
 	do {
 	    rfd = accept(lfd, (struct sockaddr *)&soun, &len);
-	} while (errno == EINTR && !errflag);
+	} while (rfd < 0 && errno == EINTR && !errflag);
 
 	if (rfd == -1) {
 	    zwarnnam(nam, "could not accept connection: %e", errno);
diff --git a/Src/Modules/tcp.c b/Src/Modules/tcp.c
index 304927313..bc1765da1 100644
--- a/Src/Modules/tcp.c
+++ b/Src/Modules/tcp.c
@@ -538,7 +538,7 @@ bin_ztcp(char *nam, char **args, Options ops, UNUSED(int func))
 	len = sizeof(sess->peer.in);
 	do {
 	    rfd = accept(lfd, (struct sockaddr *)&sess->peer.in, &len);
-	} while (errno == EINTR && !errflag);
+	} while (rfd < 0 && errno == EINTR && !errflag);
 
 	if (rfd == -1) {
 	    zwarnnam(nam, "could not accept connection: %e", errno);