[ 
https://issues.apache.org/jira/browse/FTPSERVER-91?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Niklas Gustavsson updated FTPSERVER-91:
---------------------------------------

        Fix Version/s: 1.0-M2
             Assignee: Niklas Gustavsson
    Affects Version/s:     (was: 1.0-M2)
                       1.0-M1

> SSL handshake failure causes deadlock
> -------------------------------------
>
>                 Key: FTPSERVER-91
>                 URL: https://issues.apache.org/jira/browse/FTPSERVER-91
>             Project: FtpServer
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 1.0-M1
>            Reporter: Steve Jones
>            Assignee: Niklas Gustavsson
>             Fix For: 1.0-M2
>
>
> When using the Mina listener with SSL the ftp server can "deadlock" when the 
> SSL handshake fails.
> This is easily reproducible by connecting to an implicit SSL FTPS server 
> using a non SSL FTP client.
> Each connection attempt will permanently utilize a server connection until 
> the server is restarted.
> The issue is that until the SSL handshake is completed all FTP responses are 
> buffered. This is a problem since the "MinaFtpResponseOutput" class blocks 
> until the response is actually written to the client (which it never is). 
> The "CLOSE" connection event is never processed since the worker "thread" is 
> blocked waiting for the handshake to complete and the initial response to be 
> written.
> Modifying the "MinaFtpResponseOutput" class as shown below appears to fix the 
> issue, but I'm not sure if changing this to non-blocking will cause other 
> issues. An alternative approach may be to timeout the SSL handshake after a 
> few seconds (e.g. using join(5000))
> --- 
> core/src/java/org/apache/ftpserver/listener/mina/MinaFtpResponseOutput.java 
> (revision 543677)
> +++ 
> core/src/java/org/apache/ftpserver/listener/mina/MinaFtpResponseOutput.java 
> (working copy)
> @@ -40,7 +40,7 @@
>      }
>  
>      public void write(FtpReply response) throws IOException {
> -        session.write(response).join();
> +        session.write(response);
>      }

-- 
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