[ 
https://issues.apache.org/jira/browse/DIRMINA-638?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12648419#action_12648419
 ] 

Emmanuel Lecharny commented on DIRMINA-638:
-------------------------------------------

Yeah, I just created a lonk on it.

It may be reliable, but the problem is that when used in an Applet, it will 
simply not work. We are 'happy' that Alexander not only have had the problem, 
but was clever enough to dig it and found what was the problem ! I was totally 
unaware that this class was doing such a socket connection...

> DefaultSocketSessionConfig creates some connection to itself.
> -------------------------------------------------------------
>
>                 Key: DIRMINA-638
>                 URL: https://issues.apache.org/jira/browse/DIRMINA-638
>             Project: MINA
>          Issue Type: Bug
>    Affects Versions: 1.1.7, 2.0.0-M3
>            Reporter: Emmanuel Lecharny
>            Priority: Blocker
>             Fix For: 2.0.0-M4, 1.1.8
>
>
> For some unknown reason, the DefaultSocketSessionConfig class is creating a 
> ServerSocket, and create a connection  :
>     static {
>         initializeTestAddresses();
>         boolean success = false;
>         for (Entry<InetSocketAddress, InetAddress> e : 
> TEST_ADDRESSES.entrySet()) {
>             success = initializeDefaultSocketParameters(e.getKey(), 
> e.getValue());
>             if (success) {
>                 break;
>             }
>         }
>     private static void initializeTestAddresses() {
>         try {
>             TEST_ADDRESSES.put(new InetSocketAddress(0), 
> InetAddress.getByAddress(new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 
> 0, 0, 1 }));
>             TEST_ADDRESSES.put(new InetSocketAddress(0), 
> InetAddress.getByAddress(new byte[] { 127, 0, 0, 1 }));
>         } catch (UnknownHostException e) {
>             ExceptionMonitor.getInstance().exceptionCaught(e);
>         }
>     }
>     private static boolean 
> initializeDefaultSocketParameters(InetSocketAddress bindAddress, InetAddress 
> connectAddress) {
>         ServerSocket ss = null;
>         Socket socket = null;
>         try {
>             ss = new ServerSocket();
>             ss.bind(bindAddress);
>             socket = new Socket();
>             socket.connect(new InetSocketAddress(connectAddress, 
> ss.getLocalPort()), 10000);
>             initializeDefaultSocketParameters(socket);
>             return true;
>         } catch (IOException ioe) {
>             return false;
>         } finally {
>             if (socket != null) {
>                 try {
>                     socket.close();
>                 } catch (IOException e) {
>                     ExceptionMonitor.getInstance().exceptionCaught(e);
>                 }
>             }
>             if (ss != null) {
>                 try {
>                     ss.close();
>                 } catch (IOException e) {
>                     ExceptionMonitor.getInstance().exceptionCaught(e);
>                 }
>             }
>        }
>     }
> The _only_ reason why this code exists is to setup the default values for the 
> socket configuration. 
> Not only is this bad code, but also a totally wrong thing to do : in many 
> environment, creating sockets this way will lead to breakages (Applet, etc).
> It as to be fixed urgently.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to