* but the connection was closed on the remote end. Fortunately, recv still
* works correctly and we don't need to do the getsockopt() on linux.
*/
- len = recv(fd, trash, sizeof(trash), MSG_NOSIGNAL);
+ len = recv(fd, trash, sizeof(trash), 0);
if (unlikely(len < 0 && errno == EAGAIN)) {
/* we want some polling to happen first */
fdtab[fd].ev &= ~FD_POLL_IN;
/*
* 2. read the largest possible block
*/
- if (MSG_NOSIGNAL) {
- ret = recv(fd, b->r, max, MSG_NOSIGNAL);
- } else {
- int skerr;
- socklen_t lskerr = sizeof(skerr);
-
- ret = getsockopt(fd, SOL_SOCKET, SO_ERROR, &skerr, &lskerr);
- if (ret == -1 || skerr)
- ret = -1;
- else
- ret = recv(fd, b->r, max, 0);
- }
+ ret = recv(fd, b->r, max, 0);
if (ret > 0) {
b->r += ret;