diff options
| author | Stef Walter <stef@memberwebs.com> | 2009-10-24 14:28:17 +0000 | 
|---|---|---|
| committer | Stef Walter <stef@memberwebs.com> | 2009-10-24 14:28:17 +0000 | 
| commit | 97e97c0b6f86079d57e6bdf1190fa0555a53eb20 (patch) | |
| tree | 810f8217c61c0c8b607854620da3dd4b39fe19e5 | |
| parent | e3205e63314fa68426e83f1ffce6e8ac0e81e273 (diff) | |
Support bracketted addresses.
| -rw-r--r-- | common/config-parser.c | 13 | 
1 files changed, 11 insertions, 2 deletions
| diff --git a/common/config-parser.c b/common/config-parser.c index 881838f..a76e9c2 100644 --- a/common/config-parser.c +++ b/common/config-parser.c @@ -375,6 +375,7 @@ const char*  cfg_parse_uri (char *uri, char** scheme, char** host, char **port,                 char** user, char** path, char** query)  { +    size_t len;      char* t;      *scheme = NULL; @@ -392,7 +393,7 @@ cfg_parse_uri (char *uri, char** scheme, char** host, char **port,      *host = strsep(&uri, "/");      /* Parse the community out from the host */ -    if(*host[0]) +    if((*host)[0])      {          t = strchr(*host, '@');          if(t) @@ -404,7 +405,7 @@ cfg_parse_uri (char *uri, char** scheme, char** host, char **port,      }      /* Parse out the port from the uri */ -    if(*host[0]) +    if((*host)[0])      {          t = strrchr(*host, ':');          if(t && looks_like_port(t + 1)) @@ -414,6 +415,14 @@ cfg_parse_uri (char *uri, char** scheme, char** host, char **port,          }      } +    /* Remove any brackets from the host */ +    len = strlen (*host); +    if(len > 2 && (*host)[0] == '[' && (*host)[len - 1] == ']') +    { +        (*host)[len - 1] = 0; +        (*host)++; +    } +      if(!*host[0])          return "invalid uri: no host name found"; | 
