|
|
|
@ -3407,57 +3407,3 @@ const struct AVCodecTag *avformat_get_riff_audio_tags(void) |
|
|
|
|
{ |
|
|
|
|
return ff_codec_wav_tags; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static int match_host_pattern(const char *pattern, const char *hostname) |
|
|
|
|
{ |
|
|
|
|
int len_p, len_h; |
|
|
|
|
if (!strcmp(pattern, "*")) |
|
|
|
|
return 1; |
|
|
|
|
// Skip a possible *. at the start of the pattern
|
|
|
|
|
if (pattern[0] == '*') |
|
|
|
|
pattern++; |
|
|
|
|
if (pattern[0] == '.') |
|
|
|
|
pattern++; |
|
|
|
|
len_p = strlen(pattern); |
|
|
|
|
len_h = strlen(hostname); |
|
|
|
|
if (len_p > len_h) |
|
|
|
|
return 0; |
|
|
|
|
// Simply check if the end of hostname is equal to 'pattern'
|
|
|
|
|
if (!strcmp(pattern, &hostname[len_h - len_p])) { |
|
|
|
|
if (len_h == len_p) |
|
|
|
|
return 1; // Exact match
|
|
|
|
|
if (hostname[len_h - len_p - 1] == '.') |
|
|
|
|
return 1; // The matched substring is a domain and not just a substring of a domain
|
|
|
|
|
} |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
int ff_http_match_no_proxy(const char *no_proxy, const char *hostname) |
|
|
|
|
{ |
|
|
|
|
char *buf, *start; |
|
|
|
|
int ret = 0; |
|
|
|
|
if (!no_proxy) |
|
|
|
|
return 0; |
|
|
|
|
if (!hostname) |
|
|
|
|
return 0; |
|
|
|
|
buf = av_strdup(no_proxy); |
|
|
|
|
if (!buf) |
|
|
|
|
return 0; |
|
|
|
|
start = buf; |
|
|
|
|
while (start) { |
|
|
|
|
char *sep, *next = NULL; |
|
|
|
|
start += strspn(start, " ,"); |
|
|
|
|
sep = start + strcspn(start, " ,"); |
|
|
|
|
if (*sep) { |
|
|
|
|
next = sep + 1; |
|
|
|
|
*sep = '\0'; |
|
|
|
|
} |
|
|
|
|
if (match_host_pattern(start, hostname)) { |
|
|
|
|
ret = 1; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
start = next; |
|
|
|
|
} |
|
|
|
|
av_free(buf); |
|
|
|
|
return ret; |
|
|
|
|
} |
|
|
|
|