diff options
Diffstat (limited to 'src/libserver/monitored.c')
-rw-r--r-- | src/libserver/monitored.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/libserver/monitored.c b/src/libserver/monitored.c index d41ce652e..b69261234 100644 --- a/src/libserver/monitored.c +++ b/src/libserver/monitored.c @@ -249,10 +249,19 @@ rspamd_monitored_dns_cb (struct rdns_reply *reply, void *arg) else { if (conf->expected_code != -1) { if (reply->code != conf->expected_code) { - msg_info_mon ("DNS reply returned %s while %s is expected", - rdns_strerror (reply->code), - rdns_strerror (conf->expected_code)); - rspamd_monitored_propagate_error (m, "invalid return"); + if (reply->code == RDNS_RC_NOREC && + conf->expected_code == RDNS_RC_NXDOMAIN) { + rspamd_monitored_propagate_success (m, lat); + } + else { + msg_info_mon ("DNS reply returned %s while %s is expected", + rdns_strerror (reply->code), + rdns_strerror (conf->expected_code)); + rspamd_monitored_propagate_error (m, "invalid return"); + } + } + else { + rspamd_monitored_propagate_success (m, lat); } } else if (conf->expected) { |