MINOR: dns: new flag to report that no IP can be found in a DNS response packet

Some DNS response may be valid from a protocol point of view but may not
contain any IP addresses.
This patch gives a new flag to the function dns_get_ip_from_response to
report such case.
It's up to the upper layer to decide what to do with this information.
diff --git a/include/types/dns.h b/include/types/dns.h
index 59b59c7..f8edb73 100644
--- a/include/types/dns.h
+++ b/include/types/dns.h
@@ -212,6 +212,7 @@
 					 *    matching preference was found */
 	DNS_UPD_CNAME,			/* CNAME without any IP provided in the response */
 	DNS_UPD_NAME_ERROR,		/* name in the response did not match the query */
+	DNS_UPD_NO_IP_FOUND,		/* no IP could be found in the response */
 };
 
 #endif /* _TYPES_DNS_H */
diff --git a/src/dns.c b/src/dns.c
index 4dfe697..d002f1b 100644
--- a/src/dns.c
+++ b/src/dns.c
@@ -724,6 +724,11 @@
 		return DNS_UPD_CNAME;
 	}
 
+	/* no IP found in the response */
+	if (!newip4 && !newip6) {
+		return DNS_UPD_NO_IP_FOUND;
+	}
+
 	/* case when the caller looks first for an IPv4 address */
 	if (family_priority == AF_INET) {
 		if (newip4) {
diff --git a/src/server.c b/src/server.c
index 4e06ad2..8bc3165 100644
--- a/src/server.c
+++ b/src/server.c
@@ -2049,6 +2049,13 @@
 			}
 			goto invalid;
 
+		case DNS_UPD_NO_IP_FOUND:
+			if (resolution->status != RSLV_STATUS_OTHER) {
+				resolution->status = RSLV_STATUS_OTHER;
+				resolution->last_status_change = now_ms;
+			}
+			goto stop_resolution;
+
 		default:
 			goto invalid;