Mercurial > hg > nnchat
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 } |