--- a/jdk/src/share/classes/sun/net/ftp/impl/FtpClient.java Thu Mar 28 06:55:42 2013 -0400
+++ b/jdk/src/share/classes/sun/net/ftp/impl/FtpClient.java Thu Mar 28 14:34:18 2013 -0700
@@ -76,7 +76,10 @@
private FtpReplyCode lastReplyCode = null;
/** Welcome message from the server, if any. */
private String welcomeMsg;
- private boolean passiveMode = true;
+ /**
+ * Only passive mode used in JDK. See Bug 8010784.
+ */
+ private final boolean passiveMode = true;
private TransferType type = TransferType.BINARY;
private long restartOffset = 0;
private long lastTransSize = -1; // -1 means 'unknown size'
@@ -645,9 +648,18 @@
} else {
s = new Socket();
}
+
+ InetAddress serverAddress = AccessController.doPrivileged(
+ new PrivilegedAction<InetAddress>() {
+ @Override
+ public InetAddress run() {
+ return server.getLocalAddress();
+ }
+ });
+
// Bind the socket to the same address as the control channel. This
// is needed in case of multi-homed systems.
- s.bind(new InetSocketAddress(server.getLocalAddress(), 0));
+ s.bind(new InetSocketAddress(serverAddress, 0));
if (connectTimeout >= 0) {
s.connect(dest, connectTimeout);
} else {
@@ -816,7 +828,9 @@
* @see #setActiveMode()
*/
public sun.net.ftp.FtpClient enablePassiveMode(boolean passive) {
- passiveMode = passive;
+
+ // Only passive mode used in JDK. See Bug 8010784.
+ // passiveMode = passive;
return this;
}