You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2009/09/09 22:31:06 UTC
svn commit: r813104 - in /httpcomponents/httpclient/trunk: RELEASE_NOTES.txt
httpclient/src/main/java/org/apache/http/conn/OperatedClientConnection.java
httpclient/src/main/java/org/apache/http/impl/conn/DefaultClientConnectionOperator.java
Author: olegk
Date: Wed Sep 9 20:31:05 2009
New Revision: 813104
URL: http://svn.apache.org/viewvc?rev=813104&view=rev
Log:
HTTPCLIENT-875: DefaultClientConnectionOperator#openConnection doesn't update the connection state if the connection socket changed after the call to SocketFactory#connectSocket()
Modified:
httpcomponents/httpclient/trunk/RELEASE_NOTES.txt
httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/conn/OperatedClientConnection.java
httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/conn/DefaultClientConnectionOperator.java
Modified: httpcomponents/httpclient/trunk/RELEASE_NOTES.txt
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/RELEASE_NOTES.txt?rev=813104&r1=813103&r2=813104&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/RELEASE_NOTES.txt (original)
+++ httpcomponents/httpclient/trunk/RELEASE_NOTES.txt Wed Sep 9 20:31:05 2009
@@ -1,6 +1,11 @@
Changes since 4.0
-------------------
+* [HTTPCLIENT-875] DefaultClientConnectionOperator#openConnection doesn't
+ update the connection state if the connection socket changed after
+ the call to SocketFactory#connectSocket().
+ Contributed by Oleg Kalnichevski <olegk at apache.org>
+
* [HTTPCLIENT-834] Transparent content encoding support.
Contributed by James Abley <james.abley at gmail.com>
Modified: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/conn/OperatedClientConnection.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/conn/OperatedClientConnection.java?rev=813104&r1=813103&r2=813104&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/conn/OperatedClientConnection.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/conn/OperatedClientConnection.java Wed Sep 9 20:31:05 2009
@@ -82,20 +82,25 @@
/**
* Signals that this connection is in the process of being open.
- * <br/>
- * By calling this method, you can provide the connection with
- * the unconnected socket that will be connected before
- * {@link #openCompleted} is called. This allows
- * the connection to close that socket if
+ * <p>
+ * By calling this method, the connection can be re-initialized
+ * with a new Socket instance before {@link #openCompleted} is called.
+ * This enabled the connection to close that socket if
* {@link org.apache.http.HttpConnection#shutdown shutdown}
- * is called before it is open. Closing the unconnected socket
+ * is called before it is fully open. Closing an unconnected socket
* will interrupt a thread that is blocked on the connect.
* Otherwise, that thread will either time out on the connect,
* or it returns successfully and then opens this connection
* which was just shut down.
- * <br/>
- * You also must call {@link #openCompleted} in order to complete
- * the process
+ * <p>
+ * This method can be called multiple times if the connection
+ * is layered over another protocol. <b>Note:</b> This method
+ * will <i>not</i> close the previously used socket. It is
+ * the caller's responsibility to close that socket if it is
+ * no longer required.
+ * <p>
+ * The caller must invoke {@link #openCompleted} in order to complete
+ * the process.
*
* @param sock the unconnected socket which is about to
* be connected.
Modified: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/conn/DefaultClientConnectionOperator.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/conn/DefaultClientConnectionOperator.java?rev=813104&r1=813103&r2=813104&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/conn/DefaultClientConnectionOperator.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/conn/DefaultClientConnectionOperator.java Wed Sep 9 20:31:05 2009
@@ -120,9 +120,13 @@
conn.opening(sock, target);
try {
- sock = sf.connectSocket(sock, target.getHostName(),
+ Socket connsock = sf.connectSocket(sock, target.getHostName(),
schm.resolvePort(target.getPort()),
local, 0, params);
+ if (sock != connsock) {
+ sock = connsock;
+ conn.opening(sock, target);
+ }
} catch (ConnectException ex) {
throw new HttpHostConnectException(target, ex);
}