You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
952 B
33 lines
952 B
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; |
|
}
|
|
|