struct rbldb_t {
A(uint32_t) ips;
- bool locked;
};
ARRAY(rbldb_t)
--end;
}
if (end != map.end) {
- syslog(LOG_WARNING, "file %s miss a final \\n, ignoring last line",
- file);
+ warn("file %s miss a final \\n, ignoring last line",
+ file);
}
db = p_new(rbldb_t, 1);
/* Lookup may perform serveral I/O, so avoid swap.
*/
array_adjust(db->ips);
- db->locked = lock && array_lock(db->ips);
- if (lock && !db->locked) {
+ if (lock && !array_lock(db->ips)) {
UNIXERR("mlock");
}
# include "qsort.c"
}
- syslog(LOG_INFO, "rbl %s loaded, %d IPs", file, db->ips.len);
+ info("rbl %s loaded, %d IPs", file, db->ips.len);
return db;
}
static void rbldb_wipe(rbldb_t *db)
{
- if (db->locked) {
- array_unlock(db->ips);
- }
array_wipe(db->ips);
}
#define PARSE_CHECK(Expr, Str, ...) \
if (!(Expr)) { \
- syslog(LOG_ERR, Str, ##__VA_ARGS__); \
+ err(Str, ##__VA_ARGS__); \
rbl_filter_delete(&data); \
return false; \
}
array_add(data->weights, weight);
break;
}
- current = p + 1;
- p = m_strchrnul(current, ':');
+ if (i != 2) {
+ current = p + 1;
+ p = m_strchrnul(current, ':');
+ }
}
} break;
const rbl_filter_t *data = filter->data;
if (parse_ipv4(query->client_address, &end, &ip) != 0) {
- syslog(LOG_WARNING, "invalid client address: %s, expected ipv4",
- query->client_address);
+ warn("invalid client address: %s, expected ipv4",
+ query->client_address);
return HTK_ERROR;
}
- for (int i = 0 ; i < data->rbls.len ; ++i) {
+ for (uint32_t i = 0 ; i < data->rbls.len ; ++i) {
const rbldb_t *rbl = array_elt(data->rbls, i);
int weight = array_elt(data->weights, i);
if (rbldb_ipv4_lookup(rbl, ip)) {