You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@mina.apache.org by Norbert Irmer <N....@digitec.de> on 2016/01/27 17:33:26 UTC

SslFilter with autoStart=false

Hello,

I am trying to patch QuickFIX/J to use  SOCKS Proxy connections. 

 I found a patch on the QuickFIX/J Jira  (QFJ-285), which I used as a start, and which, after some
tweaking, I got to work with Mina-2.0.10/Mina-2.0.11. 

The main problem, when doing so, was, that I had to disable the autostart feature of the SslFilter
in order to build the filterchain (ProxyFilter, SslFilter, FixProtocolFilter) without exceptions, and there wasn't a public function
to start  the Ssl handshake later on (SslFilter.startSsl only works after the initial handshake, not if autostart=false).

I solved the problem by making the function "SslFilter.initiateHandshake" public, and executing the following code
in the event handler "AbstractProxyIoHandler. proxySessionOpened":

    @Override
    public void proxySessionOpened(IoSession session) throws Exception {
        log.info("proxySessionOpened called");
        if (sslFilter != null) {
            IoFilter.NextFilter nextFilter = session.getFilterChain().getNextFilter(sslFilter);
            sslFilter.initiateHandshake(nextFilter, session);
        }
    }

Maybe you can incorporate the same change in the Mina code (making initiateHandshake public, I mean), or provide some other means
 to initiate the first SSL handshake, when autostart=false.

Regards.
Norbert 





Re: SslFilter with autoStart=false

Posted by Emmanuel Lécharny <el...@gmail.com>.
Le 27/01/16 17:33, Norbert Irmer a écrit :
> Hello,
>
> I am trying to patch QuickFIX/J to use  SOCKS Proxy connections. 
>
>  I found a patch on the QuickFIX/J Jira  (QFJ-285), which I used as a start, and which, after some
> tweaking, I got to work with Mina-2.0.10/Mina-2.0.11. 
>
> The main problem, when doing so, was, that I had to disable the autostart feature of the SslFilter
> in order to build the filterchain (ProxyFilter, SslFilter, FixProtocolFilter) without exceptions, and there wasn't a public function
> to start  the Ssl handshake later on (SslFilter.startSsl only works after the initial handshake, not if autostart=false).
>
> I solved the problem by making the function "SslFilter.initiateHandshake" public, and executing the following code
> in the event handler "AbstractProxyIoHandler. proxySessionOpened":
>
>     @Override
>     public void proxySessionOpened(IoSession session) throws Exception {
>         log.info("proxySessionOpened called");
>         if (sslFilter != null) {
>             IoFilter.NextFilter nextFilter = session.getFilterChain().getNextFilter(sslFilter);
>             sslFilter.initiateHandshake(nextFilter, session);
>         }
>     }
>
> Maybe you can incorporate the same change in the Mina code (making initiateHandshake public, I mean), or provide some other means
>  to initiate the first SSL handshake, when autostart=false.

Norbert, I think a better idea would be to add this method in the
SslFilter class :


    /**
     * Initiate the SSL handshake. This can be invoked if you have set
the 'autoStart' to
     * false when creating the SslFilter instance.
     *
     * @param session The session for which the SSL handshake should be done
     * @throws SSLException If the handshake failed
     */
    public void initiateHandshake(IoSession session) throws SSLException {
        IoFilter.NextFilter nextFilter =
session.getFilterChain().getNextFilter(SslFilter.class);
       
        initiateHandshake(nextFilter, session);
    }


You can now call it from your handler doing :


    @Override
    public void proxySessionOpened(IoSession session) throws Exception {
        log.info("proxySessionOpened called");
        if (sslFilter != null) {
            sslFilter.initiateHandshake(session);
        }
    }

That removes the burden of finding the next filter in the handler.

wdyt ?


Re: SslFilter with autoStart=false

Posted by Emmanuel Lécharny <el...@gmail.com>.
Le 27/01/16 17:33, Norbert Irmer a écrit :
> Hello,
>
> I am trying to patch QuickFIX/J to use  SOCKS Proxy connections. 
>
>  I found a patch on the QuickFIX/J Jira  (QFJ-285), which I used as a start, and which, after some
> tweaking, I got to work with Mina-2.0.10/Mina-2.0.11. 
>
> The main problem, when doing so, was, that I had to disable the autostart feature of the SslFilter
> in order to build the filterchain (ProxyFilter, SslFilter, FixProtocolFilter) without exceptions, and there wasn't a public function
> to start  the Ssl handshake later on (SslFilter.startSsl only works after the initial handshake, not if autostart=false).
>
> I solved the problem by making the function "SslFilter.initiateHandshake" public, and executing the following code
> in the event handler "AbstractProxyIoHandler. proxySessionOpened":
>
>     @Override
>     public void proxySessionOpened(IoSession session) throws Exception {
>         log.info("proxySessionOpened called");
>         if (sslFilter != null) {
>             IoFilter.NextFilter nextFilter = session.getFilterChain().getNextFilter(sslFilter);
>             sslFilter.initiateHandshake(nextFilter, session);
>         }
>     }
>
> Maybe you can incorporate the same change in the Mina code (making initiateHandshake public, I mean), or provide some other means
>  to initiate the first SSL handshake, when autostart=false.
>
> Regards.
> Norbert 
>
>
>
>
It makes perfect sense.

The autoStart feature has been added back in 2007
(svn.apache.org/viewvc?view=rev&rev=556552), and it seems nobody ever
needed to set autoStart to false before you...


Can you create a JIRA for a better follow up of the issue ?

Many thanks !