[
https://issues.apache.org/jira/browse/NET-426?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13135229#comment-13135229
]
Ketan commented on NET-426:
---------------------------
Here is code snippet I was playing with. I had this executed before data
connection handshake starting. Note this is for SunJSSE provider since I had
Sun's JVM installed:
SSLSocket sslControlSocket = (SSLSocket) controlConnectionSocket;
String host = "host.used.to.connect.to.socket";
try {
SSLSession sess = sslControlSocket.getSession();
SSLSessionContext sessions = sess.getSessionContext();
// SunJSSE 1.6 specific code
Field cache = sessions.getClass().getDeclaredField(
"sessionHostPortCache");
cache.setAccessible(true);
Object c = cache.get(sessions);
String key = (host + ":" + String.valueOf(socket.getPort()))
.toLowerCase();
// Class<?> cc = Class.forName("sun.security.util.Cache");
Class<?> cc = c.getClass();
cc.getDeclaredMethod("put", Object.class, Object.class).invoke(
c, key, sess);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
> FTPS: Hook to customize _openDataConnection_ SSLSocket before
> startHandshake() is called
> ----------------------------------------------------------------------------------------
>
> Key: NET-426
> URL: https://issues.apache.org/jira/browse/NET-426
> Project: Commons Net
> Issue Type: Bug
> Components: FTP
> Affects Versions: 3.0.1
> Reporter: Ketan
> Priority: Critical
> Attachments: FTPSClient.patch
>
> Original Estimate: 1h
> Remaining Estimate: 1h
>
> Currently in FTPSClient class, there is protected _openDataConnection_
> method, which create SSLSocket for data connection. But there is no hook to
> customize the SSLSocket before startHandshake is called.
> I need to know the remote host ip and port, which i can get for socket, and
> do custom setup to try to reuse SSL sessions from control connection socket.
> Since the socket factory uses createSocket() method, I can't just use custom
> socket factory since I don't know the host and port. I can't just override
> the _openDataConnection_() method in my class since that will call the
> startHandshake().
> So it would be nice if you can provide hook, much like _connectAction_(), but
> for data connection before handshake is started. You can pass the new data
> socket as argument to this hook method so one can get remote host and port
> information.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira