I'm checking this in to gcc svn trunk, RH 4.1 branch, and Classpath
cvs.
This fixes a bug found by Tom Fitzsimmons.
In SSLSocketFactoryImpl we were delegating createSocket calls in a way
where the 4-argument form would end up calling bind() twice on a
socket, yielding an exception. This changes the code to delegate the
other way around.
I tested this on the test case (also hacked to try the 2-arg call) and
also on the javax.net subset of Mauve.
Tom
Index: classpath/ChangeLog
from Tom Tromey <[EMAIL PROTECTED]>
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=236614
* gnu/javax/net/ssl/provider/SSLSocketFactoryImpl.java
(createSocket): Change order of delegation.
Index: classpath/gnu/javax/net/ssl/provider/SSLSocketFactoryImpl.java
===================================================================
--- classpath/gnu/javax/net/ssl/provider/SSLSocketFactoryImpl.java
(revision 123877)
+++ classpath/gnu/javax/net/ssl/provider/SSLSocketFactoryImpl.java
(working copy)
@@ -1,5 +1,5 @@
/* SSLSocketFactoryImpl.java --
- Copyright (C) 2006 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2007 Free Software Foundation, Inc.
This file is a part of GNU Classpath.
@@ -93,10 +93,7 @@
@Override public SSLSocketImpl createSocket(String host, int port)
throws IOException, UnknownHostException
{
- SSLSocketImpl socket = new SSLSocketImpl(contextImpl, host, port);
- InetSocketAddress endpoint = new InetSocketAddress(host, port);
- socket.connect(endpoint);
- return socket;
+ return createSocket(host, port, null, 0);
}
/* (non-Javadoc)
@@ -106,8 +103,10 @@
InetAddress localHost, int
localPort)
throws IOException, UnknownHostException
{
- SSLSocketImpl socket = createSocket(host, port);
+ SSLSocketImpl socket = new SSLSocketImpl(contextImpl, host, port);
+ InetSocketAddress endpoint = new InetSocketAddress(host, port);
socket.bind(new InetSocketAddress(localHost, localPort));
+ socket.connect(endpoint);
return socket;
}
@@ -117,10 +116,7 @@
@Override public SSLSocketImpl createSocket(InetAddress host, int port)
throws IOException
{
- SSLSocketImpl socket = new SSLSocketImpl(contextImpl,
- host.getCanonicalHostName(),
port);
- socket.connect(new InetSocketAddress(host, port));
- return socket;
+ return createSocket(host, port, null, 0);
}
/* (non-Javadoc)
@@ -130,8 +126,10 @@
InetAddress localHost, int
localPort)
throws IOException
{
- SSLSocketImpl socket = createSocket(host, port);
+ SSLSocketImpl socket = new SSLSocketImpl(contextImpl,
+ host.getCanonicalHostName(),
port);
socket.bind(new InetSocketAddress(localHost, localPort));
+ socket.connect(new InetSocketAddress(host, port));
return socket;
}
}