[ http://issues.apache.org/jira/browse/HTTPCLIENT-588?page=all ]
Gordon Mohr updated HTTPCLIENT-588: ----------------------------------- Attachment: httpclient-588.patch Attached patch avoids double-slash-triggered parsing of authority when it would be inappropriate: when URI is a simple authority-less path. Test for setting 'isStartedWithPath' improved to not indicate 'true' for URIs that begin '//'; 'isStartedWithPath' reused in later check to suppress inappropriate authority-parsing. Unit test verifies problem in current code and corrected behavior for test case after fix. > relative URIs with internal double-slashes ('//') misparsed > ----------------------------------------------------------- > > Key: HTTPCLIENT-588 > URL: http://issues.apache.org/jira/browse/HTTPCLIENT-588 > Project: Jakarta HttpClient > Type: Bug > Components: HttpClient > Versions: 3.0.1 > Reporter: Gordon Mohr > Attachments: httpclient-588.patch > > URI.parseUriReference()'s heuristic for interpreting URI parts is thrown off > by relative URIs which include an internal '//'. As a result, portions of the > supplied relative URI (path) can be lost. > For example: > URI rel = new URI("foo//bar//baz"); > rel.toString(); > (java.lang.String) //bar//baz > The culprit seems to be line 1961 of URI improperly concluding that two > slashes later than the beginning of 'tmp' are still indicative the URI is a > 'net_path'. > A possible quick fix might be to add a '!isStartedFromPath &&' to the > beginning of the line 1961 test, making the line: > if (!isStartedFromPath && at + 2 < length && tmp.charAt(at + 1) > == '/') { > ... and thus preventing the misguided authority-parsing from happening when > earlier analysis already identified the current string as a strictly > path-oriented URI. > (It also appears the setting of the is_net_path boolean at the end of this > if's block may be wrong; this code is run for hier_path URIs that are not > net_paths in the 2396 syntax. For example: > URI uri = new URI("http://www.example.com/some/page"); > uri.isNetPath(); > (boolean) true > ) -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]