|
@@ -187,22 +187,24 @@ bool Curl_check_noproxy(const char *name, const char *no_proxy)
|
|
|
tokenlen--;
|
|
|
|
|
|
if(tokenlen && (*token == '.')) {
|
|
|
- /* A: example.com matches '.example.com'
|
|
|
- B: www.example.com matches '.example.com'
|
|
|
- C: nonexample.com DOES NOT match '.example.com'
|
|
|
- */
|
|
|
- if((tokenlen - 1) == namelen)
|
|
|
- /* case A, exact match without leading dot */
|
|
|
- match = strncasecompare(token + 1, name, namelen);
|
|
|
- else if(tokenlen < namelen)
|
|
|
- /* case B, tailmatch with leading dot */
|
|
|
- match = strncasecompare(token, name + (namelen - tokenlen),
|
|
|
- tokenlen);
|
|
|
- /* case C passes through, not a match */
|
|
|
+ /* ignore leading token dot as well */
|
|
|
+ token++;
|
|
|
+ tokenlen--;
|
|
|
}
|
|
|
- else
|
|
|
- match = (tokenlen == namelen) &&
|
|
|
- strncasecompare(token, name, namelen);
|
|
|
+ /* A: example.com matches 'example.com'
|
|
|
+ B: www.example.com matches 'example.com'
|
|
|
+ C: nonexample.com DOES NOT match 'example.com'
|
|
|
+ */
|
|
|
+ if(tokenlen == namelen)
|
|
|
+ /* case A, exact match */
|
|
|
+ match = strncasecompare(token, name, namelen);
|
|
|
+ else if(tokenlen < namelen) {
|
|
|
+ /* case B, tailmatch domain */
|
|
|
+ match = (name[namelen - tokenlen - 1] == '.') &&
|
|
|
+ strncasecompare(token, name + (namelen - tokenlen),
|
|
|
+ tokenlen);
|
|
|
+ }
|
|
|
+ /* case C passes through, not a match */
|
|
|
break;
|
|
|
case TYPE_IPV4:
|
|
|
/* FALLTHROUGH */
|