rx: Build libtool library
[openafs.git] / src / rx / rx_lwp.c
index acf2677..e6ae068 100644 (file)
 #include <afsconfig.h>
 #include <afs/param.h>
 
-#ifndef KERNEL
-# include <roken.h>
-#endif /* KERNEL */
+#include <roken.h>
 
-#include <sys/types.h>         /* fd_set on older platforms */
-#include <errno.h>
-#include <signal.h>
-#ifdef AFS_NT40_ENV
-# include <winsock2.h>
-#else
-# include <unistd.h>           /* select() prototype */
-# include <sys/time.h>         /* struct timeval, select() prototype */
-# ifndef FD_SET
-#  include <sys/select.h>      /* fd_set on newer platforms */
-# endif
-# include <sys/socket.h>
+#ifdef HAVE_SYS_FILE_H
 # include <sys/file.h>
-# include <netdb.h>
-# include <sys/stat.h>
-# include <netinet/in.h>
-# include <net/if.h>
-# include <sys/ioctl.h>
-# include <sys/time.h>
 #endif
 
+#ifndef AFS_PTHREAD_ENV
+
+#include <lwp.h>
+
 #include "rx.h"
 #include "rx_atomic.h"
 #include "rx_globals.h"
+#include "rx_internal.h"
 #include "rx_stats.h"
-#include <lwp.h>
+#ifdef AFS_NT40_ENV
+#include "rx_xmit_nt.h"
+#endif
 
 #define MAXTHREADNAMELENGTH 64
 
@@ -424,7 +412,7 @@ rxi_Listen(osi_socket sock)
 int
 rxi_Recvmsg(osi_socket socket, struct msghdr *msg_p, int flags)
 {
-#if defined(HAVE_LINUX_ERRQUEUE_H) && defined(ADAPT_PMTU)
+#ifdef AFS_RXERRQ_ENV
     while((rxi_HandleSocketError(socket)) > 0)
        ;
 #endif
@@ -452,7 +440,7 @@ rxi_Sendmsg(osi_socket socket, struct msghdr *msg_p, int flags)
            }
            FD_SET(socket, sfds);
        }
-#if defined(HAVE_LINUX_ERRQUEUE_H) && defined(ADAPT_PMTU)
+#ifdef AFS_RXERRQ_ENV
        while((rxi_HandleSocketError(socket)) > 0)
          ;
 #endif
@@ -479,12 +467,21 @@ rxi_Sendmsg(osi_socket socket, struct msghdr *msg_p, int flags)
 #endif
            return -1;
        }
-       while ((err = select(socket + 1, 0, sfds, 0, 0)) != 1) {
+       while ((err = select(
+#ifdef AFS_NT40_ENV
+                             0,
+#else
+                             socket + 1,
+#endif
+                             0, sfds, 0, 0)) != 1) {
            if (err >= 0 || errno != EINTR)
                osi_Panic("rxi_sendmsg: select error %d.%d", err, errno);
+           FD_ZERO(sfds);
+           FD_SET(socket, sfds);
        }
     }
     if (sfds)
        IOMGR_FreeFDSet(sfds);
     return 0;
 }
+#endif