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 2012/02/14 17:12:03 UTC
svn commit: r1244105 - in /httpcomponents/httpclient/trunk/httpclient/src:
main/java/org/apache/http/client/utils/URIUtils.java
test/java/org/apache/http/client/utils/TestURIUtils.java
Author: olegk
Date: Tue Feb 14 16:12:02 2012
New Revision: 1244105
URL: http://svn.apache.org/viewvc?rev=1244105&view=rev
Log:
HTTPCLIENT-1166: more tolerant parsing logic for malformed uris with invalid authority part
Modified:
httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/utils/URIUtils.java
httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/client/utils/TestURIUtils.java
Modified: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/utils/URIUtils.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/utils/URIUtils.java?rev=1244105&r1=1244104&r2=1244105&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/utils/URIUtils.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/utils/URIUtils.java Tue Feb 14 16:12:02 2012
@@ -306,9 +306,18 @@ public class URIUtils {
if (host != null) {
int colon = host.indexOf(':');
if (colon >= 0) {
- if (colon + 1 < host.length()) {
+ int pos = colon + 1;
+ int len = 0;
+ for (int i = pos; i < host.length(); i++) {
+ if (Character.isDigit(host.charAt(i))) {
+ len++;
+ } else {
+ break;
+ }
+ }
+ if (len > 0) {
try {
- port = Integer.parseInt(host.substring(colon + 1));
+ port = Integer.parseInt(host.substring(pos, pos + len));
} catch (NumberFormatException ex) {
}
}
Modified: httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/client/utils/TestURIUtils.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/client/utils/TestURIUtils.java?rev=1244105&r1=1244104&r2=1244105&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/client/utils/TestURIUtils.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/client/utils/TestURIUtils.java Tue Feb 14 16:12:02 2012
@@ -341,9 +341,9 @@ public class TestURIUtils {
URIUtils.extractHost(new URI("http://local_host:8/abcd")));
// URI seems to OK with missing port number
- Assert.assertEquals(new HttpHost("localhost"),URIUtils.extractHost(
+ Assert.assertEquals(new HttpHost("localhost",-1),URIUtils.extractHost(
new URI("http://localhost:/abcd")));
- Assert.assertEquals(new HttpHost("local_host"),URIUtils.extractHost(
+ Assert.assertEquals(new HttpHost("local_host",-1),URIUtils.extractHost(
new URI("http://local_host:/abcd")));
Assert.assertEquals(new HttpHost("localhost",8080),
@@ -361,8 +361,10 @@ public class TestURIUtils {
Assert.assertEquals(new HttpHost("localhost",8080),
URIUtils.extractHost(new URI("http://localhost:8080/;sessionid=stuff/abcd")));
- Assert.assertEquals(new HttpHost("localhost",-1),
+ Assert.assertEquals(new HttpHost("localhost",8080),
URIUtils.extractHost(new URI("http://localhost:8080;sessionid=stuff/abcd")));
+ Assert.assertEquals(new HttpHost("localhost",-1),
+ URIUtils.extractHost(new URI("http://localhost:;sessionid=stuff/abcd")));
}
}