Author: mturk
Date: Fri Jul 15 05:39:24 2011
New Revision: 1146963

URL: http://svn.apache.org/viewvc?rev=1146963&view=rev
Log:
Simplify socket and file structures

Modified:
    commons/sandbox/runtime/trunk/src/main/native/include/acr/descriptor.h
    commons/sandbox/runtime/trunk/src/main/native/include/acr/netapi.h
    commons/sandbox/runtime/trunk/src/main/native/os/linux/epoll.c
    commons/sandbox/runtime/trunk/src/main/native/os/unix/inetsock.c
    commons/sandbox/runtime/trunk/src/main/native/os/unix/localsock.c
    commons/sandbox/runtime/trunk/src/main/native/os/unix/poll.c
    commons/sandbox/runtime/trunk/src/main/native/os/unix/pollset.c
    commons/sandbox/runtime/trunk/src/main/native/os/unix/sockstream.c
    commons/sandbox/runtime/trunk/src/main/native/os/win32/localsock.c
    commons/sandbox/runtime/trunk/src/main/native/os/win32/poll.c
    commons/sandbox/runtime/trunk/src/main/native/os/win32/pollset.c
    commons/sandbox/runtime/trunk/src/main/native/os/win32/selectset.c
    commons/sandbox/runtime/trunk/src/main/native/shared/descriptor.c
    commons/sandbox/runtime/trunk/src/main/native/shared/netaddr.c
    commons/sandbox/runtime/trunk/src/main/native/shared/select.c

Modified: commons/sandbox/runtime/trunk/src/main/native/include/acr/descriptor.h
URL: 
http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/include/acr/descriptor.h?rev=1146963&r1=1146962&r2=1146963&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/include/acr/descriptor.h 
(original)
+++ commons/sandbox/runtime/trunk/src/main/native/include/acr/descriptor.h Fri 
Jul 15 05:39:24 2011
@@ -35,22 +35,41 @@
 
 typedef struct acr_fd_t acr_fd_t;
 struct acr_fd_t {
-    volatile acr_atomic32_t refs;       /**< Reference  counter */
-    int                     type;       /**< Descriptor type    */
+    volatile acr_atomic32_t refs;       /**< Reference  counter      */
+    int                     type;       /**< Descriptor type         */
+    int                     timeout;    /**< Timeout in milliseconds */
+    int                     flags;
+#if defined(WINDOWS)
+    union {
+        HANDLE              h;
+        SOCKET              s;
+    };
+#else
+    int                     f;
+#endif
+};
+
+typedef struct acr_sd_t acr_sd_t;
+struct acr_sd_t {
+    volatile acr_atomic32_t refs;       /**< Reference  counter      */
+    int                     type;       /**< Descriptor type         */
     int                     timeout;
     int                     flags;
+#if defined(WINDOWS)
     union {
-        jlong   nh;
-        void    *p;
-        int      f;
+        HANDLE              h;
+        SOCKET              s;
+    };
+#else
+    int                     s;
+#endif
 #if defined(WINDOWS)
-        HANDLE   h;
-        SOCKET   s;
+    WCHAR                  *localsock;
+    LPOVERLAPPED            pob;        /**< For TransmitFile       */
 #else
-        int      h;
-        int      s;
+    off_t                   off;
+    size_t                  len;
 #endif
-    } u;
 };
 
 #ifdef __cplusplus

Modified: commons/sandbox/runtime/trunk/src/main/native/include/acr/netapi.h
URL: 
http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/include/acr/netapi.h?rev=1146963&r1=1146962&r2=1146963&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/include/acr/netapi.h 
(original)
+++ commons/sandbox/runtime/trunk/src/main/native/include/acr/netapi.h Fri Jul 
15 05:39:24 2011
@@ -67,8 +67,8 @@ extern "C" {
 #endif
 
 void    AcrSelectionKeyReset(JNI_STDARGS);
-int     AcrGetLocalAddr(acr_fd_t *sockfd, acr_sockaddr_t *sockaddr);
-int     AcrGetRemoteAddr(acr_fd_t *sockfd, acr_sockaddr_t *sockaddr);
+int     AcrGetLocalAddr(acr_sd_t *sockfd, acr_sockaddr_t *sockaddr);
+int     AcrGetRemoteAddr(acr_sd_t *sockfd, acr_sockaddr_t *sockaddr);
 
 #ifdef __cplusplus
 }

Modified: commons/sandbox/runtime/trunk/src/main/native/os/linux/epoll.c
URL: 
http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/os/linux/epoll.c?rev=1146963&r1=1146962&r2=1146963&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/os/linux/epoll.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/os/linux/epoll.c Fri Jul 15 
05:39:24 2011
@@ -299,7 +299,7 @@ ACR_NET_EXPORT(jint, UnixSelector, add0)
     struct epoll_event ev;
     pfd_elem_t    *pe;
     acr_pollset_t *ps = J2P(pollset, acr_pollset_t *);
-    acr_fd_t *fd      = J2P(fp, acr_fd_t *);
+    acr_sd_t *fd      = J2P(fp, acr_sd_t *);
 
     pthread_mutex_lock(&ps->mutex);
     if (AcrAtomic32Equ(&ps->state, PSS_DESTROY)) {
@@ -307,7 +307,7 @@ ACR_NET_EXPORT(jint, UnixSelector, add0)
         goto cleanup;
     }
     ACR_RING_FOREACH(pe, &ps->eset_ring, pfd_elem_t, link) {
-        if (fd->u.s == pe->fd) {
+        if (fd->s == pe->fd) {
             /* Duplicate descriptor
              */
             rc = ACR_EALREADY;
@@ -328,7 +328,7 @@ ACR_NET_EXPORT(jint, UnixSelector, add0)
         ACR_RING_ELEM_INIT(pe, link);
     }
     
-    pe->fd      = fd->u.s;
+    pe->fd      = fd->s;
     pe->ievents = ieventt(events);
     pe->revents = 0;
     pe->obj     = (*env)->NewGlobalRef(env, fo);
@@ -372,7 +372,7 @@ ACR_NET_EXPORT(jint, UnixSelector, del0)
     struct epoll_event ev = { 0 };
     pfd_elem_t    *pe = 0;
     acr_pollset_t *ps = J2P(pollset, acr_pollset_t *);
-    acr_fd_t *fd      = J2P(fp, acr_fd_t *);
+    acr_sd_t *fd      = J2P(fp, acr_sd_t *);
 
     pthread_mutex_lock(&ps->mutex);
     if (AcrAtomic32Equ(&ps->state, PSS_DESTROY) || ps->used < 2) {
@@ -383,9 +383,9 @@ ACR_NET_EXPORT(jint, UnixSelector, del0)
      * They usually mean the fd was not registered with this
      * epoll instance or already closed.
      */
-    epoll_ctl(ps->epfd, EPOLL_CTL_DEL, fd->u.s, &ev);
+    epoll_ctl(ps->epfd, EPOLL_CTL_DEL, fd->s, &ev);
     ACR_RING_FOREACH(pe, &ps->eset_ring, pfd_elem_t, link) {
-        if (fd->u.s == pe->fd) {
+        if (fd->s == pe->fd) {
             /* Unref descriptor */
             (*env)->DeleteGlobalRef(env, pe->obj);
             ACR_RING_REMOVE(pe, link);

Modified: commons/sandbox/runtime/trunk/src/main/native/os/unix/inetsock.c
URL: 
http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/os/unix/inetsock.c?rev=1146963&r1=1146962&r2=1146963&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/os/unix/inetsock.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/os/unix/inetsock.c Fri Jul 15 
05:39:24 2011
@@ -25,13 +25,13 @@
 #include <poll.h>
 #include <sys/un.h>
 
-ACR_INLINE(int) _retain_sd(acr_fd_t *sd)
+ACR_INLINE(int) _retain_sd(acr_sd_t *sd)
 {
     AcrAtomic32Inc(&sd->refs);
-    return sd->u.s;
+    return sd->s;
 }
 
-ACR_INLINE(void) _release_sd(acr_fd_t *sd)
+ACR_INLINE(void) _release_sd(acr_sd_t *sd)
 {
     if (AcrAtomic32Dec(&sd->refs) == 0) {
         /* Socket was closed while we were
@@ -50,7 +50,7 @@ ACR_NET_EXPORT(jlong, SocketDescriptor, 
     int rc   = 0;
     int af   = AF_UNSPEC;
     int type = 0;
-    acr_fd_t *sp;
+    acr_sd_t *sp;
 
     switch (stype) {
         case 1:
@@ -100,14 +100,14 @@ ACR_NET_EXPORT(jlong, SocketDescriptor, 
         ACR_THROW_NET_ERROR(rc);
         return 0;
     }
-    if ((sp = ACR_TALLOC(acr_fd_t)) == 0) {
+    if ((sp = ACR_TALLOC(acr_sd_t)) == 0) {
         r_close(sd);
         return 0;
     }
     sp->type    = ACR_DT_SOCKET;
     sp->timeout = -1;
     sp->refs    = 1;
-    sp->u.s     = sd;
+    sp->s       = sd;
     if (block == JNI_FALSE) {
         sp->flags   = ACR_DT_NONBLOCK;
         sp->timeout = 0;
@@ -118,13 +118,13 @@ ACR_NET_EXPORT(jlong, SocketDescriptor, 
 ACR_NET_EXPORT(jint, SocketDescriptor, close0)(JNI_STDARGS, jlong fp)
 {
     int sd, rc = 0;
-    acr_fd_t *fd  = J2P(fp, acr_fd_t *);
+    acr_sd_t *fd  = J2P(fp, acr_sd_t *);
 
     if (fd == 0)
         return ACR_EBADF;
-    sd = fd->u.s;
+    sd = fd->s;
     if (sd != -1) {
-        fd->u.s = -1;
+        fd->s = -1;
         if (r_close(sd) == -1)
             rc = ACR_GET_OS_ERROR();
     }
@@ -136,9 +136,9 @@ ACR_NET_EXPORT(jint, SocketDescriptor, c
 ACR_NET_EXPORT(jint, SocketDescriptor, sendz0)(JNI_STDARGS, jlong fp)
 {
     char dummy = 0;
-    acr_fd_t *fd  = J2P(fp, acr_fd_t *);
+    acr_sd_t *fd  = J2P(fp, acr_sd_t *);
 
-    if (r_write(fd->u.s, &dummy, 0) == -1)
+    if (r_write(fd->s, &dummy, 0) == -1)
         return ACR_GET_OS_ERROR();
     else
         return 0;
@@ -149,7 +149,7 @@ ACR_NET_EXPORT(jint, SocketDescriptor, s
 {
     int rc = 0;
     int sd;
-    acr_fd_t *fd = J2P(fp, acr_fd_t *);
+    acr_sd_t *fd = J2P(fp, acr_sd_t *);
 
     if (fd == 0)
         return ACR_EBADF;
@@ -160,7 +160,7 @@ ACR_NET_EXPORT(jint, SocketDescriptor, s
     else
         how = SHUT_RDWR;
     sd = _retain_sd(fd);
-    if (shutdown(fd->u.s, how) == -1)
+    if (shutdown(fd->s, how) == -1)
         rc = ACR_GET_NETOS_ERROR();
     _release_sd(fd);
     if (how != 1)
@@ -171,18 +171,18 @@ ACR_NET_EXPORT(jint, SocketDescriptor, s
 ACR_NET_EXPORT(jint, SocketDescriptor, block0)(JNI_STDARGS, jlong fp, jboolean 
on)
 {
     int rc = 0;
-    acr_fd_t *fd = J2P(fp, acr_fd_t *);
+    acr_sd_t *fd = J2P(fp, acr_sd_t *);
 
     if (on == JNI_TRUE) {
         if ((fd->flags & ACR_DT_NONBLOCK) != 0 &&
-            (rc = AcrNonblock(fd->u.s, 0)) == 0) {
+            (rc = AcrNonblock(fd->s, 0)) == 0) {
             fd->timeout = -1;
 #if HAVE_SO_RCVTIMEO && HAVE_SO_SNDTIMEO
             {
                 int zero = 0;
-                setsockopt(fd->u.s, SOL_SOCKET, SO_RCVTIMEO,
+                setsockopt(fd->s, SOL_SOCKET, SO_RCVTIMEO,
                            (char *)&zero, (socklen_t)sizeof(zero));
-                setsockopt(fd->u.s, SOL_SOCKET, SO_SNDTIMEO,
+                setsockopt(fd->s, SOL_SOCKET, SO_SNDTIMEO,
                            (char *)&zero, (socklen_t)sizeof(zero));
             }
 #endif
@@ -191,7 +191,7 @@ ACR_NET_EXPORT(jint, SocketDescriptor, b
     }
     else {
         if ((fd->flags & ACR_DT_NONBLOCK) == 0 &&
-            (rc = AcrNonblock(fd->u.s, 1)) == 0) {
+            (rc = AcrNonblock(fd->s, 1)) == 0) {
             if (fd->timeout < 0)
                 fd->timeout = 0;
             fd->flags |= ACR_DT_NONBLOCK;
@@ -202,7 +202,7 @@ ACR_NET_EXPORT(jint, SocketDescriptor, b
 
 ACR_NET_EXPORT(jboolean, SocketDescriptor, isBlocking0)(JNI_STDARGS, jlong fp)
 {
-    acr_fd_t *fd = J2P(fp, acr_fd_t *);
+    acr_sd_t *fd = J2P(fp, acr_sd_t *);
 
     if ((fd->flags & ACR_DT_NONBLOCK) == 0)
         return JNI_TRUE;

Modified: commons/sandbox/runtime/trunk/src/main/native/os/unix/localsock.c
URL: 
http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/os/unix/localsock.c?rev=1146963&r1=1146962&r2=1146963&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/os/unix/localsock.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/os/unix/localsock.c Fri Jul 
15 05:39:24 2011
@@ -34,13 +34,13 @@
 #define SOCKADDR_RELEASE(BA, SA) \
     AcrReleaseArrayCritical(env, (BA), (SA))
 
-ACR_INLINE(int) _retain_sd(acr_fd_t *sd)
+ACR_INLINE(int) _retain_sd(acr_sd_t *sd)
 {
     AcrAtomic32Inc(&sd->refs);
-    return sd->u.s;
+    return sd->s;
 }
 
-ACR_INLINE(void) _release_sd(acr_fd_t *sd)
+ACR_INLINE(void) _release_sd(acr_sd_t *sd)
 {
     if (AcrAtomic32Dec(&sd->refs) == 0) {
         /* Socket was closed while we were
@@ -55,13 +55,13 @@ ACR_INLINE(void) _release_sd(acr_fd_t *s
 ACR_NET_EXPORT(jint, LocalDescriptor, close0)(JNI_STDARGS, jlong fp)
 {
     int sd, rc = 0;
-    acr_fd_t *fd = J2P(fp, acr_fd_t *);
+    acr_sd_t *fd = J2P(fp, acr_sd_t *);
 
     if (fd == 0)
         return ACR_EBADF;
-    sd = fd->u.s; 
+    sd = fd->s; 
     if (sd != -1) {
-        fd->u.s = -1;
+        fd->s = -1;
         if (r_close(sd) == -1)
             rc = ACR_GET_OS_ERROR();
     }
@@ -75,7 +75,7 @@ ACR_NET_EXPORT(jint, LocalDescriptor, sh
 {
     int rc = 0;
     int sd;
-    acr_fd_t *fd = J2P(fp, acr_fd_t *);
+    acr_sd_t *fd = J2P(fp, acr_sd_t *);
 
     if (fd == 0)
         return ACR_EBADF;
@@ -97,9 +97,9 @@ ACR_NET_EXPORT(jint, LocalDescriptor, sh
 ACR_NET_EXPORT(jint, LocalDescriptor, sendz0)(JNI_STDARGS, jlong fp)
 {
     char dummy = 0;
-    acr_fd_t *fd = J2P(fp, acr_fd_t *);
+    acr_sd_t *fd = J2P(fp, acr_sd_t *);
 
-    if (r_write(fd->u.s, &dummy, 0) == -1)
+    if (r_write(fd->s, &dummy, 0) == -1)
         return ACR_GET_OS_ERROR();
     else
         return 0;
@@ -112,7 +112,7 @@ ACR_NET_EXPORT(jlong, LocalDescriptor, s
     int rc   = 0;
     int type = 0;
 
-    acr_fd_t *sp;
+    acr_sd_t *sp;
 
     switch (stype) {
         case 1:
@@ -152,14 +152,14 @@ ACR_NET_EXPORT(jlong, LocalDescriptor, s
         ACR_THROW_NET_ERROR(rc);
         return 0;
     }
-    if ((sp = ACR_TALLOC(acr_fd_t)) == 0) {
+    if ((sp = ACR_TALLOC(acr_sd_t)) == 0) {
         r_close(sd);
         return 0;
     }
     sp->type    = ACR_DT_LSOCK;
     sp->timeout = -1;
     sp->refs    = 1;
-    sp->u.s     = sd;
+    sp->s       = sd;
     if (block == JNI_FALSE) {
         sp->flags   = ACR_DT_NONBLOCK;
         sp->timeout = 0;
@@ -170,18 +170,18 @@ ACR_NET_EXPORT(jlong, LocalDescriptor, s
 ACR_NET_EXPORT(jint, LocalDescriptor, block0)(JNI_STDARGS, jlong fp, jboolean 
on)
 {
     int rc = 0;
-    acr_fd_t *fd = J2P(fp, acr_fd_t *);
+    acr_sd_t *fd = J2P(fp, acr_sd_t *);
 
     if (on == JNI_TRUE) {
         if ((fd->flags & ACR_DT_NONBLOCK) != 0 &&
-            (rc = AcrNonblock(fd->u.s, 0)) == 0) {
+            (rc = AcrNonblock(fd->s, 0)) == 0) {
             fd->timeout = -1;
 #if HAVE_SO_RCVTIMEO && HAVE_SO_SNDTIMEO
             {
                 int zero = 0;
-                setsockopt(fd->u.s, SOL_SOCKET, SO_RCVTIMEO,
+                setsockopt(fd->s, SOL_SOCKET, SO_RCVTIMEO,
                            (char *)&zero, (socklen_t)sizeof(zero));
-                setsockopt(fd->u.s, SOL_SOCKET, SO_SNDTIMEO,
+                setsockopt(fd->s, SOL_SOCKET, SO_SNDTIMEO,
                            (char *)&zero, (socklen_t)sizeof(zero));
             }
 #endif
@@ -190,7 +190,7 @@ ACR_NET_EXPORT(jint, LocalDescriptor, bl
     }
     else {
         if ((fd->flags & ACR_DT_NONBLOCK) == 0 &&
-            (rc = AcrNonblock(fd->u.s, 1)) == 0) {
+            (rc = AcrNonblock(fd->s, 1)) == 0) {
             if (fd->timeout < 0)
                 fd->timeout = 0;
             fd->flags |= ACR_DT_NONBLOCK;
@@ -202,42 +202,42 @@ ACR_NET_EXPORT(jint, LocalDescriptor, bl
 ACR_NET_EXPORT(jint, LocalDescriptor, tmset0)(JNI_STDARGS, jlong fp, jint 
timeout)
 {
     int rc;
-    acr_fd_t *fd = J2P(fp, acr_fd_t *);
+    acr_sd_t *fd = J2P(fp, acr_sd_t *);
 
     if (timeout == 0) {
         if ((fd->flags & ACR_DT_NONBLOCK) == 0) {
-            if ((rc = AcrNonblock(fd->u.s, 1)) != 0)
+            if ((rc = AcrNonblock(fd->s, 1)) != 0)
                 return rc;
             fd->flags |= ACR_DT_NONBLOCK;
         }
     }
     else if (timeout > 0) {
         if ((fd->flags & ACR_DT_NONBLOCK) == 0) {
-            if ((rc = AcrNonblock(fd->u.s, 1)) != 0)
+            if ((rc = AcrNonblock(fd->s, 1)) != 0)
                 return rc;
             fd->flags |= ACR_DT_NONBLOCK;
         }
 #if HAVE_SO_RCVTIMEO && HAVE_SO_SNDTIMEO
         if (fd->timeout != timeout) {
-            setsockopt(fd->u.s, SOL_SOCKET, SO_RCVTIMEO,
+            setsockopt(fd->s, SOL_SOCKET, SO_RCVTIMEO,
                       (char *)&timeout, (socklen_t)sizeof(timeout));
-            setsockopt(fd->u.s, SOL_SOCKET, SO_SNDTIMEO,
+            setsockopt(fd->s, SOL_SOCKET, SO_SNDTIMEO,
                       (char *)&timeout, (socklen_t)sizeof(timeout));
         }
 #endif
     }
     else if (timeout < 0) {
         if ((fd->flags & ACR_DT_NONBLOCK) != 0) {
-            if ((rc = AcrNonblock(fd->u.s, 0)) != 0)
+            if ((rc = AcrNonblock(fd->s, 0)) != 0)
                 return rc;
             fd->flags &= ~ACR_DT_NONBLOCK;
         }
 #if HAVE_SO_RCVTIMEO && HAVE_SO_SNDTIMEO
         {
             int zero = 0;
-            setsockopt(fd->u.s, SOL_SOCKET, SO_RCVTIMEO,
+            setsockopt(fd->s, SOL_SOCKET, SO_RCVTIMEO,
                       (char *)&zero, (socklen_t)sizeof(zero));
-            setsockopt(fd->u.s, SOL_SOCKET, SO_SNDTIMEO,
+            setsockopt(fd->s, SOL_SOCKET, SO_SNDTIMEO,
                       (char *)&zero, (socklen_t)sizeof(zero));
         }
 #endif
@@ -248,7 +248,7 @@ ACR_NET_EXPORT(jint, LocalDescriptor, tm
 
 ACR_NET_EXPORT(jboolean, LocalDescriptor, isBlocking0)(JNI_STDARGS, jlong fp)
 {
-    acr_fd_t *fd = J2P(fp, acr_fd_t *);
+    acr_sd_t *fd = J2P(fp, acr_sd_t *);
 
     if ((fd->flags & ACR_DT_NONBLOCK) == 0)
         return JNI_TRUE;
@@ -259,9 +259,9 @@ ACR_NET_EXPORT(jboolean, LocalDescriptor
     /* Use non-blocking I/O
     */
     long mode;
-    acr_fd_t *fd = J2P(fp, acr_fd_t *);
+    acr_sd_t *fd = J2P(fp, acr_sd_t *);
 
-    if ((mode = fcntl(fd->u.s, F_GETFL, 0)) == -1) {
+    if ((mode = fcntl(fd->s, F_GETFL, 0)) == -1) {
         ACR_THROW_NET_ERRNO();
         return JNI_TRUE;
     }
@@ -282,7 +282,7 @@ ACR_NET_EXPORT(jint, LocalEndpoint, conn
     int rc;
     int sd;
     acr_sockaddr_t *ca = SOCKADDR_CAST(cb);
-    acr_fd_t *fd       = J2P(fp, acr_fd_t *);
+    acr_sd_t *fd       = J2P(fp, acr_sd_t *);
 
     sd = _retain_sd(fd);
     if (timeout == 0)
@@ -304,7 +304,7 @@ ACR_NET_EXPORT(jint, LocalEndpoint, conn
     if (rc != 0) {
         if (timeout > 0) {
             if (rc == EINPROGRESS || rc == EALREADY) {
-                rc = AcrWaitIO(fd->u.s, timeout, POLLOUT);
+                rc = AcrWaitIO(fd->s, timeout, POLLOUT);
 #if defined(SO_ERROR)
                 if (rc == 0) {
                     int       err;
@@ -317,7 +317,7 @@ ACR_NET_EXPORT(jint, LocalEndpoint, conn
 #endif
             }
             if ((fd->type & ACR_DT_NONBLOCK) == 0)
-                 AcrNonblock(fd->u.s, 0);
+                 AcrNonblock(fd->s, 0);
         }
     }
 finally:
@@ -331,12 +331,12 @@ ACR_NET_EXPORT(jint, LocalServerEndpoint
 {
     int rc = 0;
     acr_sockaddr_t *aa = SOCKADDR_CAST(ba);
-    acr_fd_t *fd       = J2P(fp, acr_fd_t *);
+    acr_sd_t *fd       = J2P(fp, acr_sd_t *);
 
-    if (bind(fd->u.s, (const struct sockaddr *)&aa->sa, aa->salen) == -1)
+    if (bind(fd->s, (const struct sockaddr *)&aa->sa, aa->salen) == -1)
         rc = errno;
     SOCKADDR_RELEASE(ba, aa);
-    if (rc == 0 && listen(fd->u.s, backlog) == -1)
+    if (rc == 0 && listen(fd->s, backlog) == -1)
         rc = errno;
     return rc;
 }
@@ -360,8 +360,8 @@ ACR_NET_EXPORT(jlong, LocalServerEndpoin
     int ad;
     acr_sockaddr_t  aa;
     socklen_t       aalen;
-    acr_fd_t *fd  = J2P(fp, acr_fd_t *);
-    acr_fd_t *sp;
+    acr_sd_t *fd  = J2P(fp, acr_sd_t *);
+    acr_sd_t *sp;
 
 #if HAVE_ACCEPT4
     int flags = SOCK_CLOEXEC;
@@ -425,7 +425,7 @@ ACR_NET_EXPORT(jlong, LocalServerEndpoin
         ACR_DEBUG_TRACE("Expected AF_LOCAL but found %d\n", 
aa.sa.unx.sun_family);
     }
 #endif
-    if ((sp = ACR_TALLOC(acr_fd_t)) == 0) {
+    if ((sp = ACR_TALLOC(acr_sd_t)) == 0) {
         r_close(sd);
         return 0;
     }
@@ -433,7 +433,7 @@ ACR_NET_EXPORT(jlong, LocalServerEndpoin
     sp->flags   = fd->flags & ~ACR_DT_NONBLOCK;
     sp->timeout = fd->timeout;
     sp->refs    = 1;
-    sp->u.s     = sd;
+    sp->s       = sd;
     if (block == JNI_FALSE) {
         sp->flags |= ACR_DT_NONBLOCK;
         if (sp->timeout < 0)

Modified: commons/sandbox/runtime/trunk/src/main/native/os/unix/poll.c
URL: 
http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/os/unix/poll.c?rev=1146963&r1=1146962&r2=1146963&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/os/unix/poll.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/os/unix/poll.c Fri Jul 15 
05:39:24 2011
@@ -86,7 +86,7 @@ ACR_NET_EXPORT(jint, Poll, wait0)(JNI_ST
     pfdset  = JARRAY_CRITICAL(jlong,  fdset);
     pevents = JARRAY_CRITICAL(jshort, events);
     for (i = 0; i < nevents; i++) {
-        pfd[i].fd      = (J2P(pfdset[i], acr_fd_t *))->u.s;
+        pfd[i].fd      = (J2P(pfdset[i], acr_sd_t *))->s;
         pfd[i].events  = ieventt(pevents[i]);
         pfd[i].revents = 0;
     }
@@ -133,9 +133,9 @@ ACR_NET_EXPORT(jshort, Poll, wait1)(JNI_
     int ns;
     struct pollfd pfd;
     acr_time_t tmx = 0;
-    acr_fd_t *fd   = J2P(fp, acr_fd_t *);
+    acr_sd_t *fd   = J2P(fp, acr_sd_t *);
 
-    pfd.fd      = fd->u.s;
+    pfd.fd      = fd->s;
     pfd.events  = ieventt(events);
     pfd.revents = 0;
 

Modified: commons/sandbox/runtime/trunk/src/main/native/os/unix/pollset.c
URL: 
http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/os/unix/pollset.c?rev=1146963&r1=1146962&r2=1146963&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/os/unix/pollset.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/os/unix/pollset.c Fri Jul 15 
05:39:24 2011
@@ -410,7 +410,7 @@ ACR_NET_EXPORT(jint, PollSelector, add0)
 {
     int i, rc = 0;
     acr_pollset_t *ps = J2P(pollset, acr_pollset_t *);
-    acr_fd_t *fd      = J2P(fp, acr_fd_t *);
+    acr_sd_t *fd      = J2P(fp, acr_sd_t *);
 
     pthread_mutex_lock(&ps->mutex);
     while (!AcrAtomic32Equ(&ps->state, 0)) {
@@ -429,14 +429,14 @@ ACR_NET_EXPORT(jint, PollSelector, add0)
         goto cleanup;
     }
     for (i = 1; i < ps->used; i++) {
-        if (ps->fdset[i].fd == fd->u.s) {
+        if (ps->fdset[i].fd == fd->s) {
             /* Duplicate descriptor
              */
             rc = ACR_EALREADY;
             goto cleanup;
         }
     }
-    ps->fdset[ps->used].fd      = fd->u.s;
+    ps->fdset[ps->used].fd      = fd->s;
     ps->fdset[ps->used].events  = ieventt(events);
     ps->fdset[ps->used].revents = 0;
     ps->ooset[ps->used].obj     = (*env)->NewGlobalRef(env, fo);

Modified: commons/sandbox/runtime/trunk/src/main/native/os/unix/sockstream.c
URL: 
http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/os/unix/sockstream.c?rev=1146963&r1=1146962&r2=1146963&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/os/unix/sockstream.c 
(original)
+++ commons/sandbox/runtime/trunk/src/main/native/os/unix/sockstream.c Fri Jul 
15 05:39:24 2011
@@ -37,14 +37,14 @@
     AcrReleaseArrayCritical(env, (BA), (SA))
 
 typedef struct acr_ss_t {
-    acr_fd_t    *fd;
+    acr_sd_t    *fd;
 } acr_ss_t;
 
 ACR_INLINE(int) _retain_sd(acr_ss_t *ss)
 {
     if (ss->fd != 0) {
         AcrAtomic32Inc(&ss->fd->refs);
-        return ss->fd->u.s;
+        return ss->fd->s;
     }
     else
         return -1;
@@ -66,9 +66,9 @@ ACR_INLINE(void) _release_sd(acr_ss_t *s
 ACR_NET_EXPORT(jlong, SocketStream, alloc0)(JNI_STDARGS, jlong fp)
 {
     acr_ss_t *ss;
-    acr_fd_t *fd = J2P(fp, acr_fd_t *);
+    acr_sd_t *fd = J2P(fp, acr_sd_t *);
 
-    if (fd == 0 || fd->u.s == -1) {
+    if (fd == 0 || fd->s == -1) {
         ACR_THROW_NET_ERROR(ACR_EBADF);
         return 0;
     }
@@ -103,11 +103,11 @@ ACR_NET_EXPORT(jint, SocketStream, avail
     acr_ss_t *ss = J2P(sp, acr_ss_t *);
 
 #if defined(FIONREAD)
-    if (ioctl(ss->fd->u.s, FIONREAD, &avail) != 0)
+    if (ioctl(ss->fd->s, FIONREAD, &avail) != 0)
         avail = -1;
 #else
     char d[8];
-    avail = (int)recv(ss->fd->u.s, d, sizeof(d), MSG_PEEK);
+    avail = (int)recv(ss->fd->s, d, sizeof(d), MSG_PEEK);
 #endif
     return avail;
 }

Modified: commons/sandbox/runtime/trunk/src/main/native/os/win32/localsock.c
URL: 
http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/os/win32/localsock.c?rev=1146963&r1=1146962&r2=1146963&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/os/win32/localsock.c 
(original)
+++ commons/sandbox/runtime/trunk/src/main/native/os/win32/localsock.c Fri Jul 
15 05:39:24 2011
@@ -41,18 +41,19 @@
 #define SOCKADDR_RELEASE(BA, SA) \
     AcrReleaseArrayCritical(env, (BA), (SA))
 
-typedef struct wls_fd_t {
-    acr_fd_t fd;
-    HANDLE   fh;
-} wls_fd_t;
+typedef struct wls_sd_t {
+    acr_sd_t     fd;
+    HANDLE       fh;
+    LPOVERLAPPED op;
+} wls_sd_t;
 
-ACR_INLINE(SOCKET) _retain_sd(acr_fd_t *sd)
+ACR_INLINE(SOCKET) _retain_sd(acr_sd_t *sd)
 {
     AcrAtomic32Inc(&sd->refs);
-    return sd->u.s;
+    return sd->s;
 }
 
-ACR_INLINE(void) _release_sd(acr_fd_t *sd)
+ACR_INLINE(void) _release_sd(acr_sd_t *sd)
 {
     if (AcrAtomic32Dec(&sd->refs) == 0) {
         /* Socket was closed while we were
@@ -68,20 +69,29 @@ ACR_NET_EXPORT(jint, LocalDescriptor, cl
 {
     int rc = 0;
     SOCKET sd;
-    wls_fd_t *wd = J2P(fp, wls_fd_t *);
+    acr_sd_t *fd = J2P(fp, acr_sd_t *);
 
     if (wd == 0)
         return ACR_EBADF;
-    sd = wd->fd.u.s;
+    sd = fd->s;
+    if (wd->pob != 0) {
+        /* Close TransmitFile overlapped struct */
+        SAFE_CLOSE_HANDLE(wd->pob->hEvent);
+        AcrFre(wd->pob);
+        wd->pob = 0;
+    }
     if (sd != INVALID_SOCKET) {
-        wd->fd.u.s = INVALID_SOCKET;
-        SAFE_CLOSE_HANDLE(wd->fh);
-        wd->fh = 0;
+        fd->s = INVALID_SOCKET;
+        if (wd->localsock) {
+            DeleteFileW(w->localsock);
+            AcrFree(w->localsock);
+            w->localsock = 0;
+        }
         if (closesocket(sd) == SOCKET_ERROR)
             rc = ACR_GET_NETOS_ERROR();
-        wd->fd.u.s = INVALID_SOCKET;
+        fd->s = INVALID_SOCKET;
     }
-    if (AcrAtomic32Dec(&wd->fd.refs) == 0)
+    if (AcrAtomic32Dec(&fd->refs) == 0)
         AcrFree(wd);
     return rc;
 }
@@ -91,7 +101,7 @@ ACR_NET_EXPORT(jint, LocalDescriptor, sh
 {
     int rc = 0;
     SOCKET sd;
-    acr_fd_t *fd = J2P(fp, acr_fd_t *);
+    acr_sd_t *fd = J2P(fp, acr_sd_t *);
 
     if (fd == 0)
         return ACR_EBADF;
@@ -102,7 +112,7 @@ ACR_NET_EXPORT(jint, LocalDescriptor, sh
     else
         how = SD_BOTH;
     sd = _retain_sd(fd);
-    if (shutdown(fd->u.s, how) == SOCKET_ERROR)
+    if (shutdown(fd->s, how) == SOCKET_ERROR)
         rc = ACR_GET_NETOS_ERROR();
     _release_sd(fd);
     return rc;
@@ -111,9 +121,9 @@ ACR_NET_EXPORT(jint, LocalDescriptor, sh
 ACR_NET_EXPORT(jint, LocalDescriptor, sendz0)(JNI_STDARGS, jlong fp)
 {
     char dummy = 0;
-    acr_fd_t *fd = J2P(fp, acr_fd_t *);
+    acr_sd_t *fd = J2P(fp, acr_sd_t *);
 
-    if (send(fd->u.s, &dummy, 0, 0) == SOCKET_ERROR)
+    if (send(fd->s, &dummy, 0, 0) == SOCKET_ERROR)
         return ACR_GET_NETOS_ERROR();
     else
         return 0;
@@ -125,7 +135,7 @@ ACR_NET_EXPORT(jlong, LocalDescriptor, s
     SOCKET sd;
     int rc   = 0;
     int type = 0;
-    wls_fd_t *sp;
+    acr_sd_t *sp;
 
     switch (stype) {
         case 1:
@@ -153,14 +163,14 @@ ACR_NET_EXPORT(jlong, LocalDescriptor, s
         ACR_THROW_NET_ERROR(rc);
         return 0;
     }
-    if ((sp = ACR_TALLOC(wls_fd_t)) == 0) {
+    if ((sp = ACR_TALLOC(acr_sd_t)) == 0) {
         closesocket(sd);
         return 0;
     }
     sp->fd.type    = ACR_DT_LSOCK;
     sp->fd.timeout = -1;
     sp->fd.refs    = 1;
-    sp->fd.u.s     = sd;
+    sp->fd.s       = sd;
     sp->fh         = 0;
     if (block == JNI_FALSE) {
         sp->fd.flags  |= ACR_DT_NONBLOCK;
@@ -172,16 +182,16 @@ ACR_NET_EXPORT(jlong, LocalDescriptor, s
 ACR_NET_EXPORT(jint, LocalDescriptor, block0)(JNI_STDARGS, jlong fp, jboolean 
on)
 {
     int rc;
-    acr_fd_t *fd = J2P(fp, acr_fd_t *);
+    acr_sd_t *fd = J2P(fp, acr_sd_t *);
 
     if (on == JNI_TRUE) {
         if ((fd->flags & ACR_DT_NONBLOCK) != 0) {
             int zero = 0;
-            if ((rc = AcrNonblock(fd->u.s, 0)) != 0)
+            if ((rc = AcrNonblock(fd->s, 0)) != 0)
                 return rc;
-            setsockopt(fd->u.s, SOL_SOCKET, SO_RCVTIMEO,
+            setsockopt(fd->s, SOL_SOCKET, SO_RCVTIMEO,
                         (char *)&zero, (socklen_t)sizeof(zero));
-            setsockopt(fd->u.s, SOL_SOCKET, SO_SNDTIMEO,
+            setsockopt(fd->s, SOL_SOCKET, SO_SNDTIMEO,
                         (char *)&zero, (socklen_t)sizeof(zero));
             fd->timeout = -1;
             fd->flags &= ~ACR_DT_NONBLOCK;
@@ -189,7 +199,7 @@ ACR_NET_EXPORT(jint, LocalDescriptor, bl
     }
     else {
         if ((fd->flags & ACR_DT_NONBLOCK) == 0) {
-            if ((rc = AcrNonblock(fd->u.s, 1)) != 0)
+            if ((rc = AcrNonblock(fd->s, 1)) != 0)
                 return rc;
             if (fd->timeout < 0)
                 fd->timeout = 0;
@@ -201,7 +211,7 @@ ACR_NET_EXPORT(jint, LocalDescriptor, bl
 
 ACR_NET_EXPORT(jboolean, LocalDescriptor, isBlocking0)(JNI_STDARGS, jlong fp)
 {
-    acr_fd_t *fd = J2P(fp, acr_fd_t *);
+    acr_sd_t *fd = J2P(fp, acr_sd_t *);
 
     if ((fd->flags & ACR_DT_NONBLOCK) == 0)
         return JNI_TRUE;
@@ -212,38 +222,38 @@ ACR_NET_EXPORT(jboolean, LocalDescriptor
 ACR_NET_EXPORT(jint, LocalDescriptor, tmset0)(JNI_STDARGS, jlong fp, jint 
timeout)
 {
     int rc = 0;
-    acr_fd_t *fd = J2P(fp, acr_fd_t *);
+    acr_sd_t *fd = J2P(fp, acr_sd_t *);
 
     if (timeout == 0) {
         if ((fd->flags & ACR_DT_NONBLOCK) == 0) {
-            if ((rc = AcrNonblock(fd->u.s, 1)) != 0)
+            if ((rc = AcrNonblock(fd->s, 1)) != 0)
                 return rc;
             fd->flags |= ACR_DT_NONBLOCK;
         }
     }
     else if (timeout > 0) {
         if ((fd->flags & ACR_DT_NONBLOCK) == 0) {
-            if ((rc = AcrNonblock(fd->u.s, 1)) != 0)
+            if ((rc = AcrNonblock(fd->s, 1)) != 0)
                 return rc;
             fd->flags |= ACR_DT_NONBLOCK;
         }
         if (fd->timeout != timeout) {
-            setsockopt(fd->u.s, SOL_SOCKET, SO_RCVTIMEO,
+            setsockopt(fd->s, SOL_SOCKET, SO_RCVTIMEO,
                       (char *)&timeout, (socklen_t)sizeof(timeout));
-            setsockopt(fd->u.s, SOL_SOCKET, SO_SNDTIMEO,
+            setsockopt(fd->s, SOL_SOCKET, SO_SNDTIMEO,
                       (char *)&timeout, (socklen_t)sizeof(timeout));
         }
     }
     else if (timeout < 0) {
         int zero = 0;
         if ((fd->flags & ACR_DT_NONBLOCK) != 0) {
-            if ((rc = AcrNonblock(fd->u.s, 0)) != 0)
+            if ((rc = AcrNonblock(fd->s, 0)) != 0)
                 return rc;
             fd->flags &= ~ACR_DT_NONBLOCK;
         }
-        setsockopt(fd->u.s, SOL_SOCKET, SO_RCVTIMEO,
+        setsockopt(fd->s, SOL_SOCKET, SO_RCVTIMEO,
                     (char *)&zero, (socklen_t)sizeof(zero));
-        setsockopt(fd->u.s, SOL_SOCKET, SO_SNDTIMEO,
+        setsockopt(fd->s, SOL_SOCKET, SO_SNDTIMEO,
                     (char *)&zero, (socklen_t)sizeof(zero));
     }
     fd->timeout = timeout;
@@ -262,7 +272,8 @@ ACR_NET_EXPORT(jint, LocalEndpoint, conn
     int sas = ISIZEOF(sa);
     int bsz = ISIZEOF(ssbuf);
     acr_sockaddr_t *ca = SOCKADDR_CAST(cb);
-    wls_fd_t *wd       = J2P(fp, wls_fd_t *);
+    acr_sd_t       *fd = J2P(fp, acr_sd_t *);
+
 
     if (AcrReadFileDataA(ca->hostname, ssbuf, &bsz) == 0) {
         rc = ACR_GET_OS_ERROR();
@@ -290,9 +301,9 @@ ACR_NET_EXPORT(jint, LocalEndpoint, conn
     sa.sin_family      = AF_INET;
     sa.sin_addr.s_addr = inet_addr("127.0.0.1");
     if (timeout == 0)
-        timeout = wd->fd.timeout;
-    sd = _retain_sd((acr_fd_t *)wd);
-    if (timeout > 0 && (wd->fd.flags & ACR_DT_NONBLOCK) == 0) {
+        timeout = fd->timeout;
+    sd = _retain_sd(fd);
+    if (timeout > 0 && (fd->flags & ACR_DT_NONBLOCK) == 0) {
         /* Turn the socket to non-blocking mode
          * for the duration of the connect call.
          */
@@ -315,12 +326,12 @@ ACR_NET_EXPORT(jint, LocalEndpoint, conn
                         rc = err;
                 }
             }
-            if ((wd->fd.type & ACR_DT_NONBLOCK) == 0)
+            if ((fd->type & ACR_DT_NONBLOCK) == 0)
                  AcrNonblock(sd, 0);
         }
     }
 finally:
-    _release_sd((acr_fd_t *)wd);
+    _release_sd(fd);
     return rc;
 }
 
@@ -337,7 +348,7 @@ ACR_NET_EXPORT(jint, LocalServerEndpoint
     int sas = ISIZEOF(sa);
 
     acr_sockaddr_t *aa = SOCKADDR_CAST(ba);
-    wls_fd_t *wd       = J2P(fp, wls_fd_t *);
+    acr_sd_t *fd       = J2P(fp, wls_sd_t *);
 
     if (MultiByteToWideChar(CP_UTF8, 0, aa->hostname, -1, sname, NI_MAXHOST) 
== 0) {
         rc = GetLastError();
@@ -347,7 +358,7 @@ ACR_NET_EXPORT(jint, LocalServerEndpoint
     sfh = CreateFileW(sname, GENERIC_READ | GENERIC_WRITE,
                       FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
                       GetSaWithNullDacl(env, JNI_FALSE), CREATE_NEW,
-                      FILE_ATTRIBUTE_ARCHIVE | FILE_ATTRIBUTE_SYSTEM | 
FILE_FLAG_DELETE_ON_CLOSE,
+                      FILE_ATTRIBUTE_ARCHIVE | FILE_ATTRIBUTE_SYSTEM,
                       0);
     if (IS_INVALID_HANDLE(sfh)) {
         rc = GetLastError();
@@ -358,11 +369,11 @@ ACR_NET_EXPORT(jint, LocalServerEndpoint
     sa.sin_family      = AF_INET;
     sa.sin_addr.s_addr = inet_addr("127.0.0.1");
 
-    if (bind(wd->fd.u.s, (SOCKADDR *)&sa, sas) == -1) {
+    if (bind(fd->s, (SOCKADDR *)&sa, sas) == -1) {
         rc = ACR_GET_NETOS_ERROR();
         goto failed;
     }
-    if (getsockname(wd->fd.u.s, (SOCKADDR *)&sa, &sas) == SOCKET_ERROR) {
+    if (getsockname(fd->s, (SOCKADDR *)&sa, &sas) == SOCKET_ERROR) {
         rc = ACR_GET_NETOS_ERROR();
         goto failed;
     }
@@ -372,12 +383,13 @@ ACR_NET_EXPORT(jint, LocalServerEndpoint
         rc = GetLastError();
         goto failed;
     }
-    if (listen(wd->fd.u.s, backlog) == SOCKET_ERROR) {
+    CloseHandle(sfh);
+    if (listen(fd->s, backlog) == SOCKET_ERROR) {
         rc = ACR_GET_NETOS_ERROR();
         goto failed;
     }
     SOCKADDR_RELEASE(ba, aa);
-    wd->fh = sfh;
+    fd->localsock = wcsdup(name);
     return 0;
 
 failed:
@@ -409,19 +421,19 @@ ACR_NET_EXPORT(jlong, LocalServerEndpoin
     acr_sockaddr_t    *aa;
     struct sockaddr_in sa;
     int sas = ISIZEOF(sa);
-    wls_fd_t *sp;
-    wls_fd_t *wd  = J2P(fp, wls_fd_t *);
+    acr_sd_t *sp;
+    acr_sd_t *fd  = J2P(fp, wls_sd_t *);
 
     memset(&sa, 0, sizeof(sa));
-    ad = _retain_sd((acr_fd_t *)wd);
+    ad = _retain_sd(fd);
     sd = accept(ad,  0, 0);
-    _release_sd((acr_fd_t *)wd);
+    _release_sd(fd);
     if (sd == INVALID_SOCKET) {
         ACR_THROW_NET_ERRNO();
         return 0;
     }
     if (block == JNI_FALSE) {
-        if ((wd->fd.flags & ACR_DT_NONBLOCK) == 0) {
+        if ((fd->flags & ACR_DT_NONBLOCK) == 0) {
             int rc = AcrNonblock(sd, 1);
             if (rc != 0) {
                 closesocket(sd);
@@ -430,7 +442,7 @@ ACR_NET_EXPORT(jlong, LocalServerEndpoin
             }
         }
     }
-    else if ((wd->fd.flags & ACR_DT_NONBLOCK) != 0) {
+    else if ((fd->flags & ACR_DT_NONBLOCK) != 0) {
         int rc = AcrNonblock(sd, 0);
         if (rc != 0) {
             closesocket(sd);
@@ -438,7 +450,7 @@ ACR_NET_EXPORT(jlong, LocalServerEndpoin
             return 0;
         }
     }
-    if ((sp = ACR_TALLOC(wls_fd_t)) == 0) {
+    if ((sp = ACR_TALLOC(acr_sd_t)) == 0) {
         closesocket(sd);
         return 0;
     }
@@ -450,16 +462,15 @@ ACR_NET_EXPORT(jlong, LocalServerEndpoin
     }
     SOCKADDR_RELEASE(ba, aa);
     
-    sp->fd.type    = ACR_DT_LSOCK;
-    sp->fd.flags   = wd->fd.flags & ~ACR_DT_NONBLOCK;
-    sp->fd.timeout = wd->fd.timeout;
-    sp->fd.refs    = 1;
-    sp->fd.u.s     = sd;
-    sp->fh         = 0;
+    sp->type    = ACR_DT_LSOCK;
+    sp->flags   = fd->flags & ~ACR_DT_NONBLOCK;
+    sp->timeout = fd->timeout;
+    sp->refs    = 1;
+    sp->s       = sd;
     if (block == JNI_FALSE) {
-        sp->fd.flags |= ACR_DT_NONBLOCK;
-        if (sp->fd.timeout < 0)
-            sp->fd.timeout = 0;
+        sp->flags |= ACR_DT_NONBLOCK;
+        if (sp->timeout < 0)
+            sp->timeout = 0;
     }
     return P2J(sp);
 }

Modified: commons/sandbox/runtime/trunk/src/main/native/os/win32/poll.c
URL: 
http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/os/win32/poll.c?rev=1146963&r1=1146962&r2=1146963&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/os/win32/poll.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/os/win32/poll.c Fri Jul 15 
05:39:24 2011
@@ -86,7 +86,7 @@ ACR_NET_EXPORT(jint, Poll, wait0)(JNI_ST
     pfdset  = JARRAY_CRITICAL(jlong,  fdset);
     pevents = JARRAY_CRITICAL(jshort, events);
     for (i = 0; i < nevents; i++) {
-        pfd[i].fd      = (J2P(pfdset[i], acr_fd_t *))->u.s;
+        pfd[i].fd      = (J2P(pfdset[i], acr_sd_t *))->s;
         pfd[i].events  = ieventt(pevents[i]);
         pfd[i].revents = 0;
     }
@@ -133,13 +133,13 @@ ACR_NET_EXPORT(jshort, Poll, wait1)(JNI_
     int ns;
     struct pollfd pfd;
     acr_time_t tmx = 0;
-    acr_fd_t *fd   = J2P(fp, acr_fd_t *);
+    acr_sd_t *fd   = J2P(fp, acr_sd_t *);
 
     if (!ACR_HAVE_LATE_DLL_FUNC(WSAPoll)) {
         ACR_THROW_NET_ERROR(ACR_ENOTIMPL);
         return 0;
     }
-    pfd.fd      = fd->u.s;
+    pfd.fd      = fd->s;
     pfd.events  = ieventt(events);
     pfd.revents = 0;
 

Modified: commons/sandbox/runtime/trunk/src/main/native/os/win32/pollset.c
URL: 
http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/os/win32/pollset.c?rev=1146963&r1=1146962&r2=1146963&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/os/win32/pollset.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/os/win32/pollset.c Fri Jul 15 
05:39:24 2011
@@ -419,7 +419,7 @@ ACR_NET_EXPORT(jint, PollSelector, add0)
 {
     int i, rc = 0;
     acr_pollset_t *ps = J2P(pollset, acr_pollset_t *);
-    acr_fd_t *fd      = J2P(fp, acr_fd_t *);
+    acr_sd_t *fd      = J2P(fp, acr_sd_t *);
 
     EnterCriticalSection(&ps->mutex);
     while (!AcrAtomic32Equ(&ps->state, 0)) {
@@ -438,14 +438,14 @@ ACR_NET_EXPORT(jint, PollSelector, add0)
         goto cleanup;
     }
     for (i = 1; i < ps->used; i++) {
-        if (ps->fdset[i].fd == fd->u.s) {
+        if (ps->fdset[i].fd == fd->s) {
             /* Duplicate descriptor
              */
             rc = ACR_EALREADY;
             goto cleanup;
         }
     }
-    ps->fdset[ps->used].fd      = fd->u.s;
+    ps->fdset[ps->used].fd      = fd->s;
     ps->fdset[ps->used].events  = ieventt(events);
     ps->fdset[ps->used].revents = 0;
     ps->ooset[ps->used].obj     = (*env)->NewGlobalRef(env, fo);

Modified: commons/sandbox/runtime/trunk/src/main/native/os/win32/selectset.c
URL: 
http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/os/win32/selectset.c?rev=1146963&r1=1146962&r2=1146963&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/os/win32/selectset.c 
(original)
+++ commons/sandbox/runtime/trunk/src/main/native/os/win32/selectset.c Fri Jul 
15 05:39:24 2011
@@ -256,7 +256,7 @@ ACR_NET_EXPORT(jint, LegacySelector, add
 {
     int i, rc = 0;
     acr_pollset_t *ps = J2P(pollset, acr_pollset_t *);
-    acr_fd_t *fd      = J2P(fp, acr_fd_t *);
+    acr_sd_t *fd      = J2P(fp, acr_sd_t *);
 
     EnterCriticalSection(&ps->mutex);
     while (!AcrAtomic32Equ(&ps->state, 0)) {
@@ -275,14 +275,14 @@ ACR_NET_EXPORT(jint, LegacySelector, add
         goto cleanup;
     }
     for (i = 1; i < ps->used; i++) {
-        if (ps->ooset[i].sd == fd->u.s) {
+        if (ps->ooset[i].sd == fd->s) {
             /* Duplicate descriptor
              */
             rc = ACR_EALREADY;
             goto cleanup;
         }
     }
-    ps->ooset[ps->used].sd      = fd->u.s;
+    ps->ooset[ps->used].sd      = fd->s;
     ps->ooset[ps->used].ievents = (short)events;
     ps->ooset[ps->used].revents = 0;
     ps->ooset[ps->used].obj     = (*env)->NewGlobalRef(env, fo);
@@ -302,13 +302,13 @@ ACR_NET_EXPORT(jint, LegacySelector, add
         ps->ooset[ps->used].exp = ACR_INFINITE;
     }
     if (events & ACR_OP_INP) {
-        FD_SET(fd->u.s, &ps->rdset);
+        FD_SET(fd->s, &ps->rdset);
     }
     if (events & ACR_OP_OUT) {
-        FD_SET(fd->u.s, &ps->wrset);
+        FD_SET(fd->s, &ps->wrset);
     }
     if (events & 0xFFF0) {
-        FD_SET(fd->u.s, &ps->exset);
+        FD_SET(fd->s, &ps->exset);
     }
     ps->used++;
 cleanup:

Modified: commons/sandbox/runtime/trunk/src/main/native/shared/descriptor.c
URL: 
http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/shared/descriptor.c?rev=1146963&r1=1146962&r2=1146963&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/shared/descriptor.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/shared/descriptor.c Fri Jul 
15 05:39:24 2011
@@ -69,7 +69,12 @@ ACR_IO_EXPORT(jboolean, Descriptor, rele
          * before the release. In that case check if the
          * descriptor was closed and if not throw an exception.
          */
-        if (fd->u.f == -1 || fd->u.nh == 0) {
+#if defined(WINDOWS)
+        if (fd->s == INVALID_SOCKET || IS_INVALID_HANDLE(fd->h)) {
+#else
+        if (fd->f == -1)
+#endif
+        {
             /* Descriptor was closed.
              */
             AcrFree(fd);

Modified: commons/sandbox/runtime/trunk/src/main/native/shared/netaddr.c
URL: 
http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/shared/netaddr.c?rev=1146963&r1=1146962&r2=1146963&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/shared/netaddr.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/shared/netaddr.c Fri Jul 15 
05:39:24 2011
@@ -409,10 +409,10 @@ sockaddr_to_ipstr(char *buf, int buflen,
 }
 
 int
-AcrGetLocalAddr(acr_fd_t *sockfd, acr_sockaddr_t *sockaddr)
+AcrGetLocalAddr(acr_sd_t *sockfd, acr_sockaddr_t *sockaddr)
 {
     socklen_t salen = sizeof(sockaddr->sa);
-    if (getsockname(sockfd->u.s, (struct sockaddr *)&sockaddr->sa, &salen) == 
SOCKET_ERROR) {
+    if (getsockname(sockfd->s, (struct sockaddr *)&sockaddr->sa, &salen) == 
SOCKET_ERROR) {
         return ACR_GET_NETOS_ERROR();
     }
     else {
@@ -423,10 +423,10 @@ AcrGetLocalAddr(acr_fd_t *sockfd, acr_so
 }
 
 int
-AcrGetRemoteAddr(acr_fd_t *sockfd, acr_sockaddr_t *sockaddr)
+AcrGetRemoteAddr(acr_sd_t *sockfd, acr_sockaddr_t *sockaddr)
 {
     socklen_t salen = sizeof(sockaddr->sa);
-    if (getpeername(sockfd->u.s, (struct sockaddr *)&sockaddr->sa, &salen) == 
SOCKET_ERROR) {
+    if (getpeername(sockfd->s, (struct sockaddr *)&sockaddr->sa, &salen) == 
SOCKET_ERROR) {
         return ACR_GET_NETOS_ERROR();
     }
     else {
@@ -460,10 +460,15 @@ sockaddr_vars_set(acr_sockaddr_t *addr, 
 #if HAVE_SYS_UN_H
     else if (family == AF_LOCAL) {
         addr->salen   = ISIZEOF(struct sockaddr_un);
-        addr->addrlen = ISIZEOF(addr->sa.unx.sun_path);;
+        addr->addrlen = ISIZEOF(addr->sa.unx.sun_path);
         addr->iplen   = addr->addrlen;
     }
 #endif
+    else {
+        addr->salen   = 0;
+        addr->addrlen = 0;
+        addr->iplen   = 0;
+    }
 }
 
 static int
@@ -590,7 +595,6 @@ find_addresses(acr_sockaddr_t **sa, cons
     return call_resolver(sa, hostname, servname, family, port);
 }
 
-#define GETHOSTBYNAME_BUFLEN 512
 static int
 get_hostname(const char **hostname, acr_sockaddr_t *sockaddr, int flags)
 {
@@ -685,9 +689,9 @@ get_servname(const char **servname, acr_
     }
     else if (sockaddr->family == AF_UNIX) {
 #if defined(WINDOWS)
-        *servname = "pipe";
-#else
         *servname = "socket";
+#else
+        *servname = "unixsocket";
 #endif
         return 0;
     }
@@ -898,8 +902,15 @@ ACR_NET_EXPORT(jstring, SocketAddress, h
     acr_sockaddr_t *sa = SOCKADDR_CAST(a);
 
     if (sa != 0) {
-        if (sa->hostname[0] != '\0')
+        if (sa->hostname[0] != '\0') {
+#if defined(WINDOWS)
+            if (sa->family == AF_LOCAL)
+                rv = AcrNewJavaStringU(env, sa->hostname);
+            else
+#else
             rv = AcrNewJavaStringA(env, sa->hostname);
+#endif
+        }
         else {
             char buf[256];
             if (sockaddr_to_ipstr(buf, 256, sa) == 0)

Modified: commons/sandbox/runtime/trunk/src/main/native/shared/select.c
URL: 
http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/shared/select.c?rev=1146963&r1=1146962&r2=1146963&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/shared/select.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/shared/select.c Fri Jul 15 
05:39:24 2011
@@ -28,12 +28,14 @@ ACR_NET_EXPORT(jint, Select, wait0)(JNI_
                                     jint nevents, jint timeout)
 {
     int ns, i;
-    int nmax = -1;
 #if !defined(WINDOWS)
     acr_time_t tmx = 0;
+    int       nmax = -1;
+#else
+    int       nmax = FD_SETSIZE;
 #endif
     acr_time_t tmo = 0;
-    acr_fd_t  *fd;
+    acr_sd_t  *fd;
     struct timeval  tv = { 0, 0 };
     struct timeval *tp = 0;
     fd_set rdset, wrset, exset;
@@ -53,9 +55,9 @@ ACR_NET_EXPORT(jint, Select, wait0)(JNI_
     pfdset  = JARRAY_CRITICAL(jlong,  fdset);
     pevents = JARRAY_CRITICAL(jshort, events);
     for (i = 0; i < nevents; i++) {
-        fd = J2P(pfdset[i], acr_fd_t *);
+        fd = J2P(pfdset[i], acr_sd_t *);
 #if defined(FD_SETSIZE) && !defined(WINDOWS)
-        if (fd->u.s > FD_SETSIZE) {
+        if (fd->s > FD_SETSIZE) {
             RELEASE_CRITICAL(events, pevents);
             RELEASE_CRITICAL(fdset,  pfdset);
             ACR_THROW_NET_ERROR(ACR_ERANGE);
@@ -63,16 +65,18 @@ ACR_NET_EXPORT(jint, Select, wait0)(JNI_
         }
 #endif
         if (pevents[i] & ACR_OP_INP) {
-            FD_SET(fd->u.s, &rdset);
+            FD_SET(fd->s, &rdset);
         }
         if (pevents[i] & ACR_OP_OUT) {
-            FD_SET(fd->u.s, &wrset);
+            FD_SET(fd->s, &wrset);
         }
         if (pevents[i] & ~(ACR_OP_INP | ACR_OP_OUT)) {
-            FD_SET(fd->u.s, &exset);
+            FD_SET(fd->s, &exset);
         }
-        if (fd->u.f > nmax)
-            nmax = fd->u.f;
+#if !defined(WINDOWS)
+        if (fd->s > nmax)
+            nmax = fd->s;
+#endif
     }
     RELEASE_CRITICAL(events, pevents);
     if (timeout >= 0) {
@@ -116,8 +120,8 @@ ACR_NET_EXPORT(jint, Select, wait0)(JNI_
             ns = 0;
             pevents = JARRAY_CRITICAL(jshort, revents);
             for (i = 0; i < nevents; i++) {
-                fd = J2P(pfdset[i], acr_fd_t *);
-                if (getsockopt(fd->u.s, SOL_SOCKET, SO_TYPE, (char *)&optval, 
&optlen) == -1) {
+                fd = J2P(pfdset[i], acr_sd_t *);
+                if (getsockopt(fd->s, SOL_SOCKET, SO_TYPE, (char *)&optval, 
&optlen) == -1) {
                     if (WSAGetLastError() == WSAENOTSOCK) {
                         pevents[i] = ACR_OP_ERROR | ACR_OP_NVAL;
                         ns++;
@@ -137,15 +141,15 @@ ACR_NET_EXPORT(jint, Select, wait0)(JNI_
     }
     pevents = JARRAY_CRITICAL(jshort, revents);
     for (i = 0; i < nevents; i++) {
-        fd = J2P(pfdset[i], acr_fd_t *);
+        fd = J2P(pfdset[i], acr_sd_t *);
         pevents[i] = 0;
-        if (FD_ISSET(fd->u.s, &rdset)) {
+        if (FD_ISSET(fd->s, &rdset)) {
             pevents[i] |= ACR_OP_INP;
         }
-        if (FD_ISSET(fd->u.s, &wrset)) {
+        if (FD_ISSET(fd->s, &wrset)) {
             pevents[i] |= ACR_OP_OUT;
         }
-        if (FD_ISSET(fd->u.s, &exset)) {
+        if (FD_ISSET(fd->s, &exset)) {
             pevents[i] |= ACR_OP_ERROR;
         }
     }
@@ -162,7 +166,7 @@ ACR_NET_EXPORT(jshort, Select, wait1)(JN
     acr_time_t tmx = 0;
 #endif
     acr_time_t tmo = 0;
-    acr_fd_t  *fd  = J2P(fp, acr_fd_t *);
+    acr_sd_t  *fd  = J2P(fp, acr_sd_t *);
     struct timeval  tv;
     struct timeval *tp = 0;
     fd_set rdset, wrset, exset;
@@ -172,13 +176,13 @@ ACR_NET_EXPORT(jshort, Select, wait1)(JN
     FD_ZERO(&exset);
 
     if (events & ACR_OP_INP) {
-        FD_SET(fd->u.s, &rdset);
+        FD_SET(fd->s, &rdset);
     }
     if (events & ACR_OP_OUT) {
-        FD_SET(fd->u.s, &wrset);
+        FD_SET(fd->s, &wrset);
     }
     if (events & ~(ACR_OP_INP | ACR_OP_OUT)) {
-        FD_SET(fd->u.s, &exset);
+        FD_SET(fd->s, &exset);
     }
     if (timeout >= 0) {
         tmo = AcrTimeFromMsec(timeout);
@@ -192,7 +196,7 @@ ACR_NET_EXPORT(jshort, Select, wait1)(JN
             tp->tv_sec  = (long)AcrTimeSec(tmo);
             tp->tv_usec = (long)AcrTimeUsec(tmo);
         }
-        ns = select(fd->u.f + 1, &rdset, &wrset, &exset, tp);
+        ns = select((int)(fd->s) + 1, &rdset, &wrset, &exset, tp);
 #if !defined(WINDOWS)
         if (ns == -1 && errno == EINTR) {
             if (tmo >= 0) {
@@ -214,7 +218,7 @@ ACR_NET_EXPORT(jshort, Select, wait1)(JN
             int optval;
             int optlen = ISIZEOF(optval);
 
-            if (getsockopt(fd->u.s, SOL_SOCKET, SO_TYPE, (char *)&optval, 
&optlen) == -1) {
+            if (getsockopt(fd->s, SOL_SOCKET, SO_TYPE, (char *)&optval, 
&optlen) == -1) {
                 if (WSAGetLastError() == WSAENOTSOCK)
                     return ACR_OP_ERROR | ACR_OP_NVAL;
             }
@@ -225,13 +229,13 @@ ACR_NET_EXPORT(jshort, Select, wait1)(JN
     }
     else {
         jshort rv = 0;
-        if (FD_ISSET(fd->u.s, &rdset)) {
+        if (FD_ISSET(fd->s, &rdset)) {
             rv |= ACR_OP_INP;
         }
-        if (FD_ISSET(fd->u.s, &wrset)) {
+        if (FD_ISSET(fd->s, &wrset)) {
             rv |= ACR_OP_OUT;
         }
-        if (FD_ISSET(fd->u.s, &exset)) {
+        if (FD_ISSET(fd->s, &exset)) {
             rv |= ACR_OP_ERROR;
         }
         return rv;


Reply via email to