aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoerg Jung <mail@umaxx.net>2016-04-14 21:31:33 +0200
committerJoerg Jung <mail@umaxx.net>2016-04-14 21:31:33 +0200
commitea6513af5bd9d91b45d08d1f488ecf7b3ac79538 (patch)
tree827cd26df52cf2acd777da84f960eab01610c915
parentmake hosts static and reduce line count a bit (diff)
downloadOpenSMTPD-extras-ea6513af5bd9d91b45d08d1f488ecf7b3ac79538.tar.xz
OpenSMTPD-extras-ea6513af5bd9d91b45d08d1f488ecf7b3ac79538.zip
rename some variable to match style of other filters and tweak some whitespaces
-rw-r--r--extras/wip/filters/filter-dnsbl/filter_dnsbl.c99
1 files changed, 45 insertions, 54 deletions
diff --git a/extras/wip/filters/filter-dnsbl/filter_dnsbl.c b/extras/wip/filters/filter-dnsbl/filter_dnsbl.c
index e03bedc..729776a 100644
--- a/extras/wip/filters/filter-dnsbl/filter_dnsbl.c
+++ b/extras/wip/filters/filter-dnsbl/filter_dnsbl.c
@@ -32,53 +32,51 @@
#include "smtpd-api.h"
#include "log.h"
-struct dispatch_arg {
- uint64_t id;
- struct filter_connect *conn;
+struct dnsbl {
+ uint64_t id;
+ struct filter_connect *conn;
};
static const char *dnsbl_host = "dnsbl.sorbs.net", *dnswl_host;
-static void dnsbl_check_black(struct dispatch_arg *q);
-static void dnsbl_check_white(struct dispatch_arg *q);
+static void dnsbl_check_black(struct dnsbl *);
+static void dnsbl_check_white(struct dnsbl *);
static void
-dnsbl_event_dispatch_black(struct asr_result *ar, void *arg)
+dnsbl_event_black(struct asr_result *ar, void *p)
{
- struct dispatch_arg *q = arg;
+ struct dnsbl *dl = p;
if (ar->ar_addrinfo)
freeaddrinfo(ar->ar_addrinfo);
-
if (ar->ar_gai_errno != EAI_NODATA) {
- log_warnx("warn: session %016"PRIx64": event_dispatch_black: REJECT address", q->id);
- filter_api_reject_code(q->id, FILTER_CLOSE, 554, "5.7.1 Address in DNSBL");
+ log_warnx("warn: session %016"PRIx64": event_black: REJECT address", dl->id);
+ filter_api_reject_code(dl->id, FILTER_CLOSE, 554, "5.7.1 Address in DNSBL");
} else
- filter_api_accept(q->id);
- free(q);
+ filter_api_accept(dl->id);
+ free(dl);
}
static void
-dnsbl_event_dispatch_white(struct asr_result *ar, void *arg)
+dnsbl_event_white(struct asr_result *ar, void *p)
{
- struct dispatch_arg *q = arg;
+ struct dnsbl *dl = p;
if (ar->ar_addrinfo)
freeaddrinfo(ar->ar_addrinfo);
-
if (ar->ar_gai_errno != EAI_NODATA) {
- log_info("info: session %016"PRIx64": event_dispatch_white: ACCEPT address", q->id);
- filter_api_accept(q->id);
- free(q);
- }
+ log_info("info: session %016"PRIx64": event_white: ACCEPT address", dl->id);
+ filter_api_accept(dl->id);
+ free(dl);
+ }
else
{
- dnsbl_check_black(q);
+ dnsbl_check_black(dl);
}
}
-static struct asr_query*
-dnsbl_get_asr_query(const char* host, struct dispatch_arg *q)
+static struct asr_query *
+dnsbl_query(const char *host, struct dnsbl *dl)
{
struct filter_connect *conn;
uint64_t id;
@@ -88,8 +86,8 @@ dnsbl_get_asr_query(const char* host, struct dispatch_arg *q)
char buf[512];
aq = NULL;
- conn = q->conn;
- id = q->id;
+ conn = dl->conn;
+ id = dl->id;
in_addr = ((const struct sockaddr_in *)&conn->remote)->sin_addr.s_addr;
@@ -102,73 +100,66 @@ dnsbl_get_asr_query(const char* host, struct dispatch_arg *q)
host) >= sizeof(buf)) {
log_warnx("warn: asr_query: host name too long: %s", buf);
filter_api_reject_code(id, FILTER_FAIL, 451, "4.7.1 DNSBL filter failed");
- return NULL;
+ return NULL;
}
memset(&hints, 0, sizeof(hints));
hints.ai_family = PF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
if ((aq = getaddrinfo_async(buf, NULL, &hints, NULL)) == NULL) {
- log_warn("warn: get_asr_query: getaddrinfo_async");
+ log_warn("warn: query: getaddrinfo_async");
filter_api_reject_code(id, FILTER_FAIL, 451, "4.7.1 DNSBL filter failed");
- return NULL;
+ return NULL;
}
- log_debug("debug: get_asr_query: checking %s", buf);
+ log_debug("debug: query: checking %s", buf);
return aq;
}
static void
-dnsbl_check_black(struct dispatch_arg *q)
+dnsbl_check_black(struct dnsbl *dl)
{
struct asr_query *aq;
-
- if ((aq = dnsbl_get_asr_query(dnsbl_host, q)) == NULL) {
- free(q);
- }
- else
- {
- event_asr_run(aq, dnsbl_event_dispatch_black, q);
+
+ if ((aq = dnsbl_query(dnsbl_host, dl)) == NULL) {
+ free(dl);
+ } else {
+ event_asr_run(aq, dnsbl_event_black, dl);
}
}
static void
-dnsbl_check_white(struct dispatch_arg *q)
+dnsbl_check_white(struct dnsbl *dl)
{
struct asr_query *aq;
-
- if ((aq = dnsbl_get_asr_query(dnswl_host, q)) == NULL) {
- free(q);
- }
- else
- {
- event_asr_run(aq, dnsbl_event_dispatch_white, q);
+
+ if ((aq = dnsbl_query(dnswl_host, dl)) == NULL) {
+ free(dl);
+ } else {
+ event_asr_run(aq, dnsbl_event_white, dl);
}
}
static int
dnsbl_on_connect(uint64_t id, struct filter_connect *conn)
{
- struct dispatch_arg *q;
+ struct dnsbl *dl;
if (conn->remote.ss_family != AF_INET)
return filter_api_accept(id);
- if ((q = calloc(1, sizeof(*q))) == NULL) {
+ if ((dl = calloc(1, sizeof(*dl))) == NULL) {
log_warn("warn: on_connect: calloc");
return filter_api_reject_code(id, FILTER_FAIL, 451, "4.7.1 DNSBL filter failed");
}
- q->id = id;
- q->conn = conn;
+ dl->id = id;
+ dl->conn = conn;
if (dnswl_host) {
- dnsbl_check_white(q);
+ dnsbl_check_white(dl);
+ } else {
+ dnsbl_check_black(dl);
}
- else
- {
- dnsbl_check_black(q);
- }
-
return 1;
}