X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=lib%2Fsocket.c;h=733f1f4768e8a0b41c9a51a0903d73e1d08539c0;hb=bff8fe460dcf4b25071fff966d86877b30eeec90;hp=6f626529be9a2c3d6c7b982a648e9edf806d2e2d;hpb=099be710b67ac221279f7d69c5c902206f69f587;p=deb_libnfs.git
diff --git a/lib/socket.c b/lib/socket.c
index 6f62652..733f1f4 100644
--- a/lib/socket.c
+++ b/lib/socket.c
@@ -14,26 +14,46 @@
You should have received a copy of the GNU Lesser General Public License
along with this program; if not, see .
*/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#ifdef AROS
+#include "aros_compat.h"
+#endif
+
#ifdef WIN32
#include "win32_compat.h"
#else
-#include
#include
+#endif/*WIN32*/
+
+#ifdef HAVE_POLL_H
+#include
+#endif
+
+#ifdef HAVE_UNISTD_H
+#include
+#endif
+
+#ifdef HAVE_SYS_IOCTL_H
#include
+#endif
+
+#ifdef HAVE_SYS_SOCKET_H
#include
-#include
-#endif/*WIN32*/
+#endif
-#ifdef HAVE_CONFIG_H
-#include "config.h"
+#ifdef HAVE_NETDB_H
+#include
#endif
-#ifdef AROS
-#include "aros_compat.h"
+#ifdef HAVE_SYS_FILIO_H
+#include
#endif
-#ifdef HAVE_POLL_H
-#include
+#ifdef HAVE_SYS_SOCKIO_H
+#include
#endif
#include
@@ -42,12 +62,6 @@
#include
#include
#include
-#ifdef HAVE_SYS_FILIO_H
-#include
-#endif
-#ifdef HAVE_SYS_SOCKIO_H
-#include
-#endif
#include
#include "libnfs-zdr.h"
#include "libnfs.h"
@@ -69,7 +83,7 @@ static void set_nonblocking(int fd)
int v = 0;
#if defined(WIN32)
long nonblocking=1;
- v = ioctlsocket(fd, FIONBIO,&nonblocking);
+ v = ioctl(fd, FIONBIO, &nonblocking);
#else
v = fcntl(fd, F_GETFL, 0);
fcntl(fd, F_SETFL, v | O_NONBLOCK);
@@ -149,11 +163,7 @@ static int rpc_read_from_socket(struct rpc_context *rpc)
assert(rpc->magic == RPC_CONTEXT_MAGIC);
-#if defined(WIN32)
- if (ioctlsocket(rpc->fd, FIONREAD, &available) != 0) {
-#else
if (ioctl(rpc->fd, FIONREAD, &available) != 0) {
-#endif
rpc_set_error(rpc, "Ioctl FIONREAD returned error : %d. Closing socket.", errno);
return -1;
}
@@ -399,8 +409,12 @@ static int rpc_connect_sockaddr_async(struct rpc_context *rpc, struct sockaddr_s
static int portOfs = 0;
const int firstPort = 512; /* >= 512 according to Sun docs */
const int portCount = IPPORT_RESERVED - firstPort;
- int startOfs = portOfs, port, rc;
+ int startOfs, port, rc;
+ if (portOfs == 0) {
+ portOfs = time(NULL) % 400;
+ }
+ startOfs = portOfs;
do {
rc = -1;
port = htons(firstPort + portOfs);
@@ -484,11 +498,7 @@ int rpc_disconnect(struct rpc_context *rpc, char *error)
rpc_unset_autoreconnect(rpc);
if (rpc->fd != -1) {
-#if defined(WIN32)
- closesocket(rpc->fd);
-#else
close(rpc->fd);
-#endif
}
rpc->fd = -1;
@@ -520,11 +530,7 @@ static int rpc_reconnect_requeue(struct rpc_context *rpc)
assert(rpc->magic == RPC_CONTEXT_MAGIC);
if (rpc->fd != -1) {
-#if defined(WIN32)
- closesocket(rpc->fd);
-#else
close(rpc->fd);
-#endif
}
rpc->fd = -1;