Hi,
I have a suggestion for the Curl_is_absolute_url function. 

If I have understood it correctly, the function will determine whether the 
given URL is an absolute URI or a relative reference according to section 4.2 
and 4.3 in RFC 3986. It will also try to be user-friendly by allowing the URI 
to start with a authority (host + port) which isn’t prefixed with a double 
slash by making the assumption that a scheme is always followed by a double 
slash (and then the authority), but a URI doesn’t have to include a authority 
(even if all of the currently implemented protocols do). 

I propose to change the check for a slash to instead check that the char isn’t 
a number. 

This will make the function better adhere to the standard URI syntax while 
still allowing it to be user-friendly. This won’t make the function completely 
standard compliant since the standard allows a colon after the host and then a 
zero-length port number, though I’ve never seen a URI being used that way. 

diff --git a/lib/urlapi.c b/lib/urlapi.c
index 0eb06d24d..fc7925bea 100644
--- a/lib/urlapi.c
+++ b/lib/urlapi.c
@@ -238,7 +238,7 @@ bool Curl_is_absolute_url(const char *url, char *buf, 
size_t buflen)
 #endif
   for(i = 0; i < buflen && url[i]; ++i) {
     char s = url[i];
-    if((s == ':') && (url[i + 1] == '/')) {
+    if((s == ':') && (!ISDIGIT(url[i + 1]))) {
       if(buf)
         buf[i] = 0;
       return TRUE;

What do you think?

Regards,
Aron Bergman

P.S. Is there any preferred line-length for mail?
-------------------------------------------------------------------
Unsubscribe: https://cool.haxx.se/list/listinfo/curl-library
Etiquette:   https://curl.haxx.se/mail/etiquette.html

Reply via email to