commit - 5620e673dab9c1f9c344b40d9957184471086577
commit + a7f2d00f4c7897b17b12dda2e761b4bbd28e5df3
blob - 8e41b296fa48e93c115ecf7ee2dc1e32d667e2e2
blob + 1abbcd5ca48239b567aac236475de662ca7eee10
--- Makefile
+++ Makefile
+LOCALBASE?= /usr/local/
+
PROG= filter-dnsbl
MAN= filter-dnsbl.8
BINDIR= ${LOCALBASE}/libexec/smtpd/
blob - 76f95fcb6436297e78c50cd061b56bd3bd88f067
blob + 0ee1727d71073537dd3593a162231177e9bfbdbe
--- main.c
+++ main.c
struct dnsbl_query {
struct event_asr *event;
- int resolved;
+ int running;
int blacklist;
struct dnsbl_session *session;
};
&(session->query[i]));
session->query[i].blacklist = i;
session->query[i].session = session;
+ session->query[i].running = 1;
}
}
struct dnsbl_session *session = query->session;
size_t i;
- query->resolved = 1;
+ query->running = 0;
query->event = NULL;
if (result->ar_hostent != NULL) {
if (!markspam) {
fprintf(stderr, "%016"PRIx64" listed at %s: rejected\n",
session->ctx->reqid, blacklists[query->blacklist]);
} else {
- dnsbl_session_query_done(session);
session->listed = query->blacklist;
osmtpd_filter_proceed(session->ctx);
/* Delay logging until we have a message */
}
+ dnsbl_session_query_done(session);
return;
}
if (result->ar_h_errno != HOST_NOT_FOUND) {
osmtpd_filter_disconnect(session->ctx, "DNS error on %s",
blacklists[query->blacklist]);
+ dnsbl_session_query_done(session);
return;
}
for (i = 0; i < nblacklists; i++) {
- if (!session->query[i].resolved)
+ if (session->query[i].running)
return;
}
osmtpd_filter_proceed(session->ctx);
size_t i;
for (i = 0; i < nblacklists; i++) {
- if (!session->query[i].resolved) {
+ if (session->query[i].running) {
event_asr_abort(session->query[i].event);
- session->query[i].resolved = 1;
+ session->query[i].running = 0;
}
}
}