X-Git-Url: http://git.madism.org/?a=blobdiff_plain;f=postlicyd%2Frbl.c;h=1341f029f19360bf21c909f370b9a38a76dfca51;hb=7e6264b4c2833ad719899b571ba10e6f4cf89508;hp=748d40a1d5ae970da52a58ee3281f7803d0c54a0;hpb=52179a67b5e09f3f767789abd7857ae17d5f15c2;p=apps%2Fpfixtools.git diff --git a/postlicyd/rbl.c b/postlicyd/rbl.c index 748d40a..1341f02 100644 --- a/postlicyd/rbl.c +++ b/postlicyd/rbl.c @@ -62,7 +62,6 @@ enum { struct rbldb_t { A(uint32_t) ips; - bool locked; }; ARRAY(rbldb_t) @@ -156,8 +155,7 @@ rbldb_t *rbldb_create(const char *file, bool lock) /* 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"); } @@ -175,9 +173,6 @@ rbldb_t *rbldb_create(const char *file, bool lock) static void rbldb_wipe(rbldb_t *db) { - if (db->locked) { - array_unlock(db->ips); - } array_wipe(db->ips); } @@ -305,8 +300,10 @@ static bool rbl_filter_constructor(filter_t *filter) array_add(data->weights, weight); break; } - current = p + 1; - p = m_strchrnul(current, ':'); + if (i != 2) { + current = p + 1; + p = m_strchrnul(current, ':'); + } } } break; @@ -355,7 +352,7 @@ static filter_result_t rbl_filter(const filter_t *filter, const query_t *query) 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)) {