comparison network.c @ 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 6e5789cbb4d4
comparison
equal deleted inserted replaced
489:ba48840b8525 490:9141f13be70c
404 socktv.tv_usec = NN_DELAY_USEC; 404 socktv.tv_usec = NN_DELAY_USEC;
405 tmpfds = conn->sockfds; 405 tmpfds = conn->sockfds;
406 406
407 if ((result = select(conn->socket + 1, &tmpfds, NULL, NULL, &socktv)) == -1) 407 if ((result = select(conn->socket + 1, &tmpfds, NULL, NULL, &socktv)) == -1)
408 { 408 {
409 conn->err = nn_get_socket_errno(); 409 int err = nn_get_socket_errno();
410 if (conn->err != EINTR) 410 if (err != EINTR)
411 { 411 {
412 conn->err = err;
412 nn_conn_err(conn, "Error occured in select(%d, sockfds): %d, %s\n", 413 nn_conn_err(conn, "Error occured in select(%d, sockfds): %d, %s\n",
413 socket, conn->err, nn_get_socket_errstr(conn->err)); 414 socket, conn->err, nn_get_socket_errstr(conn->err));
414 return -1; 415 return -1;
415 } 416 }
416 } 417 }