#include <assert.h>
#include <string.h>
-#if !defined(_WIN32) && !defined(__OS2__)
+#if !defined(_WIN32)
#include <unistd.h>
#endif
RIGHT_ANCHORED_HOST
};
static jb_err compile_vanilla_host_pattern(struct pattern_spec *url, const char *host_pattern);
-#ifdef FEATURE_EXTENDED_HOST_PATTERNS
+#ifdef FEATURE_PCRE_HOST_PATTERNS
static jb_err compile_pcre_host_pattern(struct pattern_spec *url, const char *host_pattern);
#endif
url_path
);
*url_path = '\0';
- http->hostport = strdup_or_die(url_noproto);
+ http->hostport = string_tolower(url_noproto);
}
else
{
* or CONNECT requests
*/
http->path = strdup_or_die("/");
- http->hostport = strdup_or_die(url_noproto);
+ http->hostport = string_tolower(url_noproto);
}
freez(buf);
+
+ if (http->hostport == NULL)
+ {
+ return JB_ERR_PARSE;
+ }
}
if (!host_available)
{
char *p;
-#ifdef FEATURE_EXTENDED_HOST_PATTERNS
+#ifdef FEATURE_PCRE_HOST_PATTERNS
const size_t prefix_length = 18;
if (strncmpic(buf, "PCRE-HOST-PATTERN:", prefix_length) == 0)
{
- url->pattern.url_spec.host_regex_type = EXTENDED_HOST_PATTERN;
+ url->pattern.url_spec.host_regex_type = PCRE_HOST_PATTERN;
/* Overwrite the "PCRE-HOST-PATTERN:" prefix */
memmove(buf, buf+prefix_length, strlen(buf+prefix_length)+1);
}
if (buf[0] != '\0')
{
-#ifdef FEATURE_EXTENDED_HOST_PATTERNS
- if (url->pattern.url_spec.host_regex_type == EXTENDED_HOST_PATTERN)
+#ifdef FEATURE_PCRE_HOST_PATTERNS
+ if (url->pattern.url_spec.host_regex_type == PCRE_HOST_PATTERN)
{
return compile_pcre_host_pattern(url, buf);
}
}
-#ifdef FEATURE_EXTENDED_HOST_PATTERNS
+#ifdef FEATURE_PCRE_HOST_PATTERNS
/*********************************************************************
*
* Function : compile_pcre_host_pattern
{
return compile_pattern(host_pattern, RIGHT_ANCHORED_HOST, url, &url->pattern.url_spec.host_regex);
}
-#endif /* def FEATURE_EXTENDED_HOST_PATTERNS */
+#endif /* def FEATURE_PCRE_HOST_PATTERNS */
/*********************************************************************
if (pattern == NULL) return;
freez(pattern->spec);
-#ifdef FEATURE_EXTENDED_HOST_PATTERNS
+#ifdef FEATURE_PCRE_HOST_PATTERNS
if (pattern->pattern.url_spec.host_regex)
{
regfree(pattern->pattern.url_spec.host_regex);
freez(pattern->pattern.url_spec.host_regex);
}
-#endif /* def FEATURE_EXTENDED_HOST_PATTERNS */
+#endif /* def FEATURE_PCRE_HOST_PATTERNS */
freez(pattern->pattern.url_spec.dbuffer);
freez(pattern->pattern.url_spec.dvec);
pattern->pattern.url_spec.dcount = 0;
const struct pattern_spec *pattern)
{
assert(http->host != NULL);
-#ifdef FEATURE_EXTENDED_HOST_PATTERNS
- if (pattern->pattern.url_spec.host_regex_type == EXTENDED_HOST_PATTERN) {
+#ifdef FEATURE_PCRE_HOST_PATTERNS
+ if (pattern->pattern.url_spec.host_regex_type == PCRE_HOST_PATTERN)
+ {
return ((NULL == pattern->pattern.url_spec.host_regex)
|| (0 == regexec(pattern->pattern.url_spec.host_regex,
http->host, 0, NULL, 0)));