static inline rbl_result_t rbl_dns_check(const char *hostname)
{
+ debug("looking up for %s", hostname);
struct hostent *host = gethostbyname(hostname);
if (host != NULL) {
+ debug("host found");
return RBL_FOUND;
} else {
if (h_errno == HOST_NOT_FOUND) {
+ debug("host not found: %s", hostname);
return RBL_NOTFOUND;
}
+ debug("dns error: %m");
return RBL_ERROR;
}
}
}
}}
- PARSE_CHECK(data->rbls.len,
+ PARSE_CHECK(data->rbls.len || data->host_offsets.len,
"no file parameter in the filter %s", filter->name);
filter->data = data;
return true;
PARSE_CHECK(config->is_email != config->is_hostname,
"matched field MUST be emails XOR hostnames");
- PARSE_CHECK(config->tries.len,
+ PARSE_CHECK(config->tries.len || config->host_offsets.len,
"no file parameter in the filter %s", filter->name);
filter->data = config;
return true;
if (config->match_ ## Flag) { \
const int len = m_strlen(query->Field); \
strlist_copy(normal, query->Field, len, false); \
- for (uint32_t i = 0 ; len > 0 && i < config->tries.len ; ++i) { \
+ for (uint32_t i = 0 ; len > 0 && i < config->host_offsets.len ; ++i) { \
const char *rbl = array_ptr(config->hosts, \
array_elt(config->host_offsets, i));\
const int weight = array_elt(config->host_weights, i); \