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: 2.0.0-M3
            Reporter: Emmanuel Lecharny
            Priority: Blocker
             Fix For: 2.0.0-M4


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