You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by dr...@apache.org on 2004/06/21 17:50:55 UTC
cvs commit: apr-util/uri apr_uri.c
dreid 2004/06/21 08:50:55
Modified: uri apr_uri.c
Log:
Commit Nick Kews patch from bug #28450.
Some white space adjustments were needed.
The bug report should now be closed.
Bug Report: 28450
Obtained from: Nick Kew <nick webthing org>
Reviewed by: David Reid <dreid apache org>
Revision Changes Path
1.21 +16 -0 apr-util/uri/apr_uri.c
Index: apr_uri.c
===================================================================
RCS file: /home/cvs/apr-util/uri/apr_uri.c,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- apr_uri.c 21 Feb 2004 00:43:56 -0000 1.20
+++ apr_uri.c 21 Jun 2004 15:50:55 -0000 1.21
@@ -273,6 +273,20 @@
* the reason for the gotos. -djg
*/
if (uri[0] == '/') {
+ /* RFC2396 #4.3 says that two leading slashes mean we have an
+ * authority component, not a path! Fixing this looks scary
+ * with the gotos here. But if the existing logic is valid,
+ * then presumably a goto pointing to deal_with_authority works.
+ *
+ * RFC2396 describes this as resolving an ambiguity. In the
+ * case of three or more slashes there would seem to be no
+ * ambiguity, so it is a path after all.
+ */
+ if (uri[1] == '/' && uri[2] != '/') {
+ s = uri + 2 ;
+ goto deal_with_authority ;
+ }
+
deal_with_path:
/* we expect uri to point to first character of path ... remember
* that the path could be empty -- http://foobar?query for example
@@ -316,6 +330,8 @@
uptr->scheme = apr_pstrmemdup(p, uri, s - uri);
s += 3;
+
+deal_with_authority:
hostinfo = s;
while ((uri_delims[*(unsigned char *)s] & NOTEND_HOSTINFO) == 0) {
++s;