AbstractHttpClient.determineTarget(HttpUriRequest)
--------------------------------------------------

                 Key: HTTPCLIENT-1038
                 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-1038
             Project: HttpComponents HttpClient
          Issue Type: Bug
          Components: HttpClient
    Affects Versions: 4.1 Beta1
         Environment: OS: windows server 2003 64-bit; 
IDE: Eclipse Java EE IDE for Web Developers, Version: Indigo Release, Build id: 
20101216-1529;
Java: java version "1.7.0-ea", Java(TM) SE Runtime Environment (build 
1.7.0-ea-b83), Java HotSpot(TM) 64-Bit Server VM (build 17.0-b09, mixed mode);
            Reporter: Sree Vaddi


Issue with 4.1 beta1 fails to parse the right host from the URL, eg. 
http://my.site.com/search/?for=http://other.site.com
This fails request for eg. REST that has a param value with ':' or '?' or '/'.

AbstractHttpClient.determineTarget(HttpUriRequest)
httpcomponents-client-4.0.3:
    private HttpHost determineTarget(HttpUriRequest request) {
        // A null target may be acceptable if there is a default target.
        // Otherwise, the null target is detected in the director.
        HttpHost target = null;

        URI requestURI = request.getURI();
        if (requestURI.isAbsolute()) {
            target = new HttpHost(
                    requestURI.getHost(),
                    requestURI.getPort(),
                    requestURI.getScheme());
        }
        return target;
    }


httpcomponents-client-4.1-beta1:
    private HttpHost determineTarget(HttpUriRequest request) throws 
ClientProtocolException {
        // A null target may be acceptable if there is a default target.
        // Otherwise, the null target is detected in the director.
        HttpHost target = null;

        URI requestURI = request.getURI();
        if (requestURI.isAbsolute()) {
            String ssp = requestURI.getSchemeSpecificPart();
            ssp = ssp.substring(2, ssp.length()); //remove "//" prefix
            int end = ssp.indexOf(':') > 0 ? ssp.indexOf(':') :
                    ssp.indexOf('/') > 0 ? ssp.indexOf('/') :
                    ssp.indexOf('?') > 0 ? ssp.indexOf('?') : ssp.length();
            String host = ssp.substring(0, end);

            int port = requestURI.getPort();
            String scheme = requestURI.getScheme();
            if (host == null || "".equals(host)) {
                throw new ClientProtocolException(
                        "URI does not specify a valid host name: " + 
requestURI);
            }
            target = new HttpHost(host, port, scheme);
        }
        return target;
    }


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to