Author: olegk Date: Thu Mar 30 02:09:57 2006 New Revision: 390058 URL: http://svn.apache.org/viewcvs?rev=390058&view=rev Log: PR #36918 (Digest auth uses wrong uri in proxy authentication)
Changelog: Digest auth scheme fixed to generate correct digest uri in HTTP CONNECT requests Contributed by Oleg Kalnichevski Reviewed by Ortwin Glück Modified: jakarta/commons/proper/httpclient/trunk/release_notes.txt jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/ConnectMethod.java jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/HttpMethodDirector.java jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/ProxyClient.java Modified: jakarta/commons/proper/httpclient/trunk/release_notes.txt URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/httpclient/trunk/release_notes.txt?rev=390058&r1=390057&r2=390058&view=diff ============================================================================== --- jakarta/commons/proper/httpclient/trunk/release_notes.txt (original) +++ jakarta/commons/proper/httpclient/trunk/release_notes.txt Thu Mar 30 02:09:57 2006 @@ -1,3 +1,9 @@ +Changes toward 3.1 + + * 36918 - Digest auth scheme now uses correct digest uri in HTTP CONNECT + requests + Contributed by Oleg Kalnichevski <olegk at apache.org> + Changes since Release 3.0: * 38818 - Failed CONNECT no longer leaves connection in an inconsistent state Modified: jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/ConnectMethod.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/ConnectMethod.java?rev=390058&r1=390057&r2=390058&view=diff ============================================================================== --- jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/ConnectMethod.java (original) +++ jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/ConnectMethod.java Thu Mar 30 02:09:57 2006 @@ -49,13 +49,18 @@ /** the name of this method */ public static final String NAME = "CONNECT"; + private final HostConfiguration targethost; + /** + * @deprecated use #ConnectMethod(HttpHost); + * * Create a connect method. * * @since 3.0 */ public ConnectMethod() { - LOG.trace("enter ConnectMethod()"); + super(); + this.targethost = null; } /** @@ -67,7 +72,21 @@ * to the server */ public ConnectMethod(HttpMethod method) { - LOG.trace("enter ConnectMethod(HttpMethod)"); + super(); + this.targethost = null; + } + + /** + * Create a connect method. + * + * @since 3.0 + */ + public ConnectMethod(final HostConfiguration targethost) { + super(); + if (targethost == null) { + throw new IllegalArgumentException("Target host may not be null"); + } + this.targethost = targethost; } /** @@ -78,6 +97,26 @@ public String getName() { return NAME; } + + public String getPath() { + if (this.targethost != null) { + StringBuffer buffer = new StringBuffer(); + buffer.append(this.targethost.getHost()); + int port = this.targethost.getPort(); + if (port == -1) { + port = this.targethost.getProtocol().getDefaultPort(); + } + buffer.append(':'); + buffer.append(port); + return buffer.toString(); + } else { + return "/"; + } + } + + public URI getURI() throws URIException { + return new URI(getPath(), true); + } /** * This method does nothing. <tt>CONNECT</tt> request is not supposed @@ -158,15 +197,17 @@ */ protected void writeRequestLine(HttpState state, HttpConnection conn) throws IOException, HttpException { - int port = conn.getPort(); - if (port == -1) { - port = conn.getProtocol().getDefaultPort(); - } StringBuffer buffer = new StringBuffer(); buffer.append(getName()); buffer.append(' '); - buffer.append(conn.getHost()); - if (port > -1) { + if (this.targethost != null) { + buffer.append(getPath()); + } else { + int port = conn.getPort(); + if (port == -1) { + port = conn.getProtocol().getDefaultPort(); + } + buffer.append(conn.getHost()); buffer.append(':'); buffer.append(port); } Modified: jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/HttpMethodDirector.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/HttpMethodDirector.java?rev=390058&r1=390057&r2=390058&view=diff ============================================================================== --- jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/HttpMethodDirector.java (original) +++ jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/HttpMethodDirector.java Thu Mar 30 02:09:57 2006 @@ -472,7 +472,7 @@ private boolean executeConnect() throws IOException, HttpException { - this.connectMethod = new ConnectMethod(); + this.connectMethod = new ConnectMethod(this.hostConfiguration); this.connectMethod.getParams().setDefaults(this.hostConfiguration.getParams()); int code; Modified: jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/ProxyClient.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/ProxyClient.java?rev=390058&r1=390057&r2=390058&view=diff ============================================================================== --- jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/ProxyClient.java (original) +++ jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/ProxyClient.java Thu Mar 30 02:09:57 2006 @@ -189,7 +189,7 @@ throw new IllegalStateException("secure protocol socket factory may not be used"); } - ConnectMethod method = new ConnectMethod(); + ConnectMethod method = new ConnectMethod(getHostConfiguration()); method.getParams().setDefaults(getParams()); DummyConnectionManager connectionManager = new DummyConnectionManager(); --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]