Author: mturk
Date: Sun Jul 17 14:05:25 2011
New Revision: 1147619

URL: http://svn.apache.org/viewvc?rev=1147619&view=rev
Log:
Move those lenghty configure code to a separate files inside build directory

Modified:
    
commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/LocalServerEndpoint.java
    
commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/SocketServerEndpoint.java
    commons/sandbox/runtime/trunk/src/main/native/os/unix/inetsock.c

Modified: 
commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/LocalServerEndpoint.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/LocalServerEndpoint.java?rev=1147619&r1=1147618&r2=1147619&view=diff
==============================================================================
--- 
commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/LocalServerEndpoint.java
 (original)
+++ 
commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/LocalServerEndpoint.java
 Sun Jul 17 14:05:25 2011
@@ -172,7 +172,11 @@ public class LocalServerEndpoint extends
             backlog = LISTEN_BACKLOG;
         int rc = bind0(sd.fd(), endpoint.sockaddr(), backlog);
         if (rc != 0) {
-            sd.close();
+            try {
+                sd.close();
+            } catch (Exception u) {
+                // Ingnore close Exceptions.
+            }
             throw new IOException(Status.describe(rc));
         }
         bound = true;

Modified: 
commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/SocketServerEndpoint.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/SocketServerEndpoint.java?rev=1147619&r1=1147618&r2=1147619&view=diff
==============================================================================
--- 
commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/SocketServerEndpoint.java
 (original)
+++ 
commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/SocketServerEndpoint.java
 Sun Jul 17 14:05:25 2011
@@ -168,7 +168,11 @@ public class SocketServerEndpoint extend
             backlog = LISTEN_BACKLOG;
         int rc = bind0(sd.fd(), sa.sockaddr(), backlog);
         if (rc != 0) {
-            sd.close();
+            try {
+                sd.close();
+            } catch (Exception u) {
+                // Ingnore close Exceptions.
+            }
             throw new IOException(Status.describe(rc));
         }
         bound = true;

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=1147619&r1=1147618&r2=1147619&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 Sun Jul 17 
14:05:25 2011
@@ -274,28 +274,34 @@ ACR_NET_EXPORT(jint, SocketServerEndpoin
 {
     static char any[16] = { 0 }; /* big enough for IPv4 or IPv6 */    
     int rc = 0;
+    int on = 1;
     acr_sockaddr_t *aa = SOCKADDR_CAST(ba);
     acr_sd_t *fd       = J2P(fp, acr_sd_t *);
 
+    if (setsockopt(fd->s, SOL_SOCKET, SO_REUSEADDR, (void *)&on, SSIZEOF(int)) 
!= 0) {
+        rc = ACR_GET_NETOS_ERROR();
+        goto finally;
+    }
     if (bind(fd->s, (const struct sockaddr *)&aa->sa, aa->salen) == -1) {
         /* bind failed.
          */
         rc = ACR_GET_NETOS_ERROR();
+        goto finally;
     }
-    else {
-        /* Check for ephemeral port and "any" address.
-         * The provided byte array is duplicate of the original
-         * so it can be modified.
-         */
-        if (aa->port == 0 || memcmp(&aa->sa.sin.sin_addr, any, aa->iplen) == 
0) {
-            /* Get the real address for the bound socket.
-             */
-            rc = AcrGetLocalAddr(fd, aa);
-        }
+    /* Check for ephemeral port and "any" address.
+     * The provided byte array is duplicate of the original
+     * so it can be modified.
+     */
+    if (aa->port == 0 || memcmp(&aa->sa.sin.sin_addr, any, aa->iplen) == 0) {
+        /* Get the real address for the bound socket.
+            */
+        if ((rc = AcrGetLocalAddr(fd, aa)) != 0)
+            goto finally;
     }
-    SOCKADDR_RELEASE(ba, aa);
-    if (rc == 0 && listen(fd->s, backlog) == -1)
+    if (listen(fd->s, backlog) == -1)
         rc = ACR_GET_NETOS_ERROR();
+finally:
+    SOCKADDR_RELEASE(ba, aa);
     return rc;
 }
 


Reply via email to