Author: trustin
Date: Thu Apr  5 02:36:43 2007
New Revision: 525781

URL: http://svn.apache.org/viewvc?view=rev&rev=525781
Log:
Fixed issue: DIRMINA-366 Default socket option values are retrieved incorrectly.
* sendBufferSize is calculated correctly now.


Modified:
    
mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionConfigImpl.java
    
mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionConfigImpl.java
    
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DefaultSocketSessionConfig.java

Modified: 
mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionConfigImpl.java
URL: 
http://svn.apache.org/viewvc/mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionConfigImpl.java?view=diff&rev=525781&r1=525780&r2=525781
==============================================================================
--- 
mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionConfigImpl.java
 (original)
+++ 
mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionConfigImpl.java
 Thu Apr  5 02:36:43 2007
@@ -24,6 +24,8 @@
 import org.apache.mina.common.support.BaseIoSessionConfig;
 
 import java.io.IOException;
+import java.net.InetSocketAddress;
+import java.net.ServerSocket;
 import java.net.Socket;
 import java.net.SocketException;
 
@@ -56,12 +58,24 @@
     
     private static void initialize()
     {
+        ServerSocket ss = null;
         Socket socket = null;
         
-        socket = new Socket();
+        try {
+            ss = new ServerSocket();
+            ss.bind(new InetSocketAddress("localhost", 0));
+            socket = new Socket();
+            try {
+                // Timeout is set to 10 seconds in case of infinite blocking
+                // on some platform.
+                socket.connect(
+                        new InetSocketAddress("localhost", ss.getLocalPort()), 
10000);
+            } catch (IOException e) {
+                // We can retrieve the values even if the connection
+                // attempt fails, although it might be somewhat incorrect
+                // on some platform.
+            }
 
-        try
-        {
             DEFAULT_REUSE_ADDRESS = socket.getReuseAddress();
             DEFAULT_RECEIVE_BUFFER_SIZE = socket.getReceiveBufferSize();
             DEFAULT_SEND_BUFFER_SIZE = socket.getSendBufferSize();
@@ -104,7 +118,7 @@
                 DEFAULT_TRAFFIC_CLASS = 0;
             }
         }
-        catch( SocketException e )
+        catch( Exception e )
         {
             throw new ExceptionInInitializerError(e);
         }
@@ -118,6 +132,14 @@
                 }
                 catch( IOException e )
                 {
+                    ExceptionMonitor.getInstance().exceptionCaught(e);
+                }
+            }
+
+            if (ss != null) {
+                try {
+                    ss.close();
+                } catch (IOException e) {
                     ExceptionMonitor.getInstance().exceptionCaught(e);
                 }
             }

Modified: 
mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionConfigImpl.java
URL: 
http://svn.apache.org/viewvc/mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionConfigImpl.java?view=diff&rev=525781&r1=525780&r2=525781
==============================================================================
--- 
mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionConfigImpl.java
 (original)
+++ 
mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionConfigImpl.java
 Thu Apr  5 02:36:43 2007
@@ -24,6 +24,8 @@
 import org.apache.mina.common.support.BaseIoSessionConfig;
 
 import java.io.IOException;
+import java.net.InetSocketAddress;
+import java.net.ServerSocket;
 import java.net.Socket;
 import java.net.SocketException;
 
@@ -56,12 +58,24 @@
     
     private static void initialize()
     {
+        ServerSocket ss = null;
         Socket socket = null;
         
-        socket = new Socket();
+        try {
+            ss = new ServerSocket();
+            ss.bind(new InetSocketAddress("localhost", 0));
+            socket = new Socket();
+            try {
+                // Timeout is set to 10 seconds in case of infinite blocking
+                // on some platform.
+                socket.connect(
+                        new InetSocketAddress("localhost", ss.getLocalPort()), 
10000);
+            } catch (IOException e) {
+                // We can retrieve the values even if the connection
+                // attempt fails, although it might be somewhat incorrect
+                // on some platform.
+            }
 
-        try
-        {
             DEFAULT_REUSE_ADDRESS = socket.getReuseAddress();
             DEFAULT_RECEIVE_BUFFER_SIZE = socket.getReceiveBufferSize();
             DEFAULT_SEND_BUFFER_SIZE = socket.getSendBufferSize();
@@ -104,7 +118,7 @@
                 DEFAULT_TRAFFIC_CLASS = 0;
             }
         }
-        catch( SocketException e )
+        catch( Exception e )
         {
             throw new ExceptionInInitializerError(e);
         }
@@ -118,6 +132,14 @@
                 }
                 catch( IOException e )
                 {
+                    ExceptionMonitor.getInstance().exceptionCaught(e);
+                }
+            }
+
+            if (ss != null) {
+                try {
+                    ss.close();
+                } catch (IOException e) {
                     ExceptionMonitor.getInstance().exceptionCaught(e);
                 }
             }

Modified: 
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DefaultSocketSessionConfig.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DefaultSocketSessionConfig.java?view=diff&rev=525781&r1=525780&r2=525781
==============================================================================
--- 
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DefaultSocketSessionConfig.java
 (original)
+++ 
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DefaultSocketSessionConfig.java
 Thu Apr  5 02:36:43 2007
@@ -20,6 +20,8 @@
 package org.apache.mina.transport.socket.nio;
 
 import java.io.IOException;
+import java.net.InetSocketAddress;
+import java.net.ServerSocket;
 import java.net.Socket;
 import java.net.SocketException;
 
@@ -51,16 +53,30 @@
     static
     {
         initialize();
+        System.out.println(DEFAULT_REUSE_ADDRESS);
+        System.out.println(DEFAULT_SEND_BUFFER_SIZE);
     }
     
     private static void initialize()
     {
+        ServerSocket ss = null;
         Socket socket = null;
         
-        socket = new Socket();
+        try {
+            ss = new ServerSocket();
+            ss.bind(new InetSocketAddress("localhost", 0));
+            socket = new Socket();
+            try {
+                // Timeout is set to 10 seconds in case of infinite blocking
+                // on some platform.
+                socket.connect(
+                        new InetSocketAddress("localhost", ss.getLocalPort()), 
10000);
+            } catch (IOException e) {
+                // We can retrieve the values even if the connection
+                // attempt fails, although it might be somewhat incorrect
+                // on some platform.
+            }
 
-        try
-        {
             DEFAULT_REUSE_ADDRESS = socket.getReuseAddress();
             DEFAULT_RECEIVE_BUFFER_SIZE = socket.getReceiveBufferSize();
             DEFAULT_SEND_BUFFER_SIZE = socket.getSendBufferSize();
@@ -103,7 +119,7 @@
                 DEFAULT_TRAFFIC_CLASS = 0;
             }
         }
-        catch( SocketException e )
+        catch( Exception e )
         {
             throw new ExceptionInInitializerError(e);
         }
@@ -117,6 +133,14 @@
                 }
                 catch( IOException e )
                 {
+                    ExceptionMonitor.getInstance().exceptionCaught(e);
+                }
+            }
+
+            if (ss != null) {
+                try {
+                    ss.close();
+                } catch (IOException e) {
                     ExceptionMonitor.getInstance().exceptionCaught(e);
                 }
             }


Reply via email to