diff -up nfs-utils-1.3.0/support/nfs/rpc_socket.c.orig nfs-utils-1.3.0/support/nfs/rpc_socket.c --- nfs-utils-1.3.0/support/nfs/rpc_socket.c.orig 2014-03-25 11:12:07.000000000 -0400 +++ nfs-utils-1.3.0/support/nfs/rpc_socket.c 2016-04-28 11:37:53.694236000 -0400 @@ -215,7 +215,7 @@ static int nfs_connect_nb(const int fd, * use it later. */ ret = connect(fd, sap, salen); - if (ret < 0 && errno != EINPROGRESS) { + if (ret < 0 && errno != EINPROGRESS && errno != EINTR) { ret = -1; goto done; } @@ -227,10 +227,16 @@ static int nfs_connect_nb(const int fd, FD_ZERO(&rset); FD_SET(fd, &rset); - ret = select(fd + 1, NULL, &rset, NULL, timeout); - if (ret <= 0) { - if (ret == 0) - errno = ETIMEDOUT; + while ((ret = select(fd + 1, NULL, &rset, NULL, timeout)) < 0) { + if (errno != EINTR) { + ret = -1; + goto done; + } else { + continue; + } + } + if (ret == 0) { + errno = ETIMEDOUT; ret = -1; goto done; }