changeset 490:9141f13be70c dev-1_0_3

Don't set conn->err if we are handling EINTR and it isn't supposed to get to higher level. Fixes NNChat quitting unexpectedly when resizing a terminal window causes EINTR for select() in the network polling.
author Matti Hamalainen <ccr@tnsp.org>
date Sun, 27 May 2012 09:23:12 +0300
parents ba48840b8525
children 942446795978
files network.c
diffstat 1 files changed, 3 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/network.c	Sun May 27 03:31:35 2012 +0300
+++ b/network.c	Sun May 27 09:23:12 2012 +0300
@@ -406,9 +406,10 @@
 
     if ((result = select(conn->socket + 1, &tmpfds, NULL, NULL, &socktv)) == -1)
     {
-        conn->err = nn_get_socket_errno();
-        if (conn->err != EINTR)
+        int err = nn_get_socket_errno();
+        if (err != EINTR)
         {
+            conn->err = err;
             nn_conn_err(conn, "Error occured in select(%d, sockfds): %d, %s\n",
                 socket, conn->err, nn_get_socket_errstr(conn->err));
             return -1;