Addition of SocketConnector method to handle socks proxies.
-----------------------------------------------------------

         Key: DIRMINA-223
         URL: http://issues.apache.org/jira/browse/DIRMINA-223
     Project: Directory MINA
        Type: Improvement

    Versions: 0.9.4    
 Environment: All platforms
    Reporter: John Preston


When using MINA to to establish a SocketConnector behind a firewall it is 
necessary to specify socks proxie to use. The SocketConnector can be ammended 
as follows: (svn diff)


Index: 
core/src/main/java/org/apache/mina/transport/socket/nio/SocketConnector.java
===================================================================
--- 
core/src/main/java/org/apache/mina/transport/socket/nio/SocketConnector.java    
    (revision 415629)
+++ 
core/src/main/java/org/apache/mina/transport/socket/nio/SocketConnector.java    
    (working copy)
@@ -21,6 +21,7 @@
 import java.io.IOException;
 import java.net.ConnectException;
 import java.net.InetSocketAddress;
+import java.net.Proxy;
 import java.net.SocketAddress;
 import java.nio.channels.SelectionKey;
 import java.nio.channels.Selector;
@@ -61,6 +62,7 @@
     private final Set managedSessions = Collections.synchronizedSet( new 
HashSet() );
     private final SocketIoProcessor[] ioProcessors;
     private final int processorCount;
+    private final Proxy socketProxy;
 
     /**
      * @noinspection FieldAccessedSynchronizedAndUnsynchronized
@@ -73,9 +75,17 @@
     /**
      * Create a connector with a single processing thread
      */
+    public SocketConnector(Proxy proxy)
+    {
+        this( 1, proxy );
+    }
+
+    /**
+     * Create a connector with a single processing thread
+     */
     public SocketConnector()
     {
-        this( 1 );
+        this( 1, Proxy.NO_PROXY );
     }
 
     /**
@@ -83,7 +93,7 @@
      *
      * @param processorCount Number of processing threads
      */
-    public SocketConnector( int processorCount )
+    public SocketConnector( int processorCount, Proxy proxy )
     {
         if( processorCount < 1 )
         {
@@ -91,6 +101,7 @@
         }
 
         this.processorCount = processorCount;
+        this.socketProxy = proxy == null ? Proxy.NO_PROXY : proxy;
         ioProcessors = new SocketIoProcessor[processorCount];
 
         for( int i = 0; i < processorCount; i++ )
@@ -153,11 +164,12 @@
         boolean success = false;
         try
         {
-            ch = SocketChannel.open();
-            ch.socket().setReuseAddress( true );
+            Socket s = new Socket(socketProxy);
+            s.setReuseAddress( true );
+            ch = s.getChannel().open();
             if( localAddress != null )
             {
-                ch.socket().bind( localAddress );
+                s.bind( localAddress );
             }
 
             ch.configureBlocking( false );
@@ -475,4 +487,4 @@
             this.config = config;
         }
     }
-}
\ No newline at end of file
+}



-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to