[ https://issues.apache.org/jira/browse/HTTPCLIENT-1960?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16741616#comment-16741616 ]
Oleg Kalnichevski commented on HTTPCLIENT-1960: ----------------------------------------------- [~rmcuenen] {quote} The test succeeds, but the resulting URI has an empty path and a host with the value "blah". This is technically not what was entered into the builder. {quote} But what does {{ftp://blah}} represent exactly? Is it a scheme and a path or is it a scheme and a host? Tolerance to multiple consecutive slashes in paths is 1. *silly and pointless* 2. leads to ambiguity like above. We could disallow double leading slashes in case of the authority component is missing similar to what {{java.net.URI}} constructors do, but it feels shoddy and more importantly it does not resolve ambiguity when parsing such URIs. Oleg > URIBuilder incorrect handling of multiple leading slashes in path component > --------------------------------------------------------------------------- > > Key: HTTPCLIENT-1960 > URL: https://issues.apache.org/jira/browse/HTTPCLIENT-1960 > Project: HttpComponents HttpClient > Issue Type: Bug > Components: HttpClient (async), HttpClient (classic) > Affects Versions: 4.5.5 > Reporter: Raymond Cuenen > Assignee: Oleg Kalnichevski > Priority: Major > > If original path startsWith '/' it is removed by normalizePath; in that case > it should be added again URI-encoded. For example: A path value of > '/etc/motd' becomes: > {code:java} > ftp://myn...@host.dom/etc/motd{code} > while it should be: > {code:java} > ftp://myn...@host.dom/%2Fetc/motd{code} > Only when the path value is 'etc/motd' is should become > "ftp://myn...@host.dom/etc/motd" > > Fix for this issue in URIBuilder.java: > {noformat} > private String buildString() { > ... > if (this.encodedPath != null) { > sb.append(normalizePath(this.encodedPath, sb.length() == 0)); > } else if (this.path != null) { > String encodedPath = encodePath(normalizePath(this.path, sb.length() > == 0)); > // Start fix for paths starting with '/' > // If original path startsWith '/' it is removed by normalizePath; in > that case it should be added again URI-encoded. > if (this.path.startsWith("/")) { > encodedPath = "/%2F" + encodedPath.substring(1); > } > // End fix > sb.append(encodedPath); > } > ... > }{noformat} -- This message was sent by Atlassian JIRA (v7.6.3#76005) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@hc.apache.org For additional commands, e-mail: dev-h...@hc.apache.org