diff options
-rw-r--r-- | ext/standard/dns.c | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/ext/standard/dns.c b/ext/standard/dns.c index 7060d3f064..37cad8bfc9 100644 --- a/ext/standard/dns.c +++ b/ext/standard/dns.c @@ -896,13 +896,24 @@ PHP_FUNCTION(dns_get_record) if (n < 0) { php_dns_free_handle(handle); - if (h_errno == NO_DATA || h_errno == HOST_NOT_FOUND) { - continue; - } else { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "DNS Query failed"); - zval_dtor(return_value); - RETURN_FALSE; + switch (h_errno) { + case NO_DATA: + case HOST_NOT_FOUND: + continue; + + case NO_RECOVERY: + php_error_docref(NULL TSRMLS_CC, E_WARNING, "An unexpected server failure occurred."); + break; + + case TRY_AGAIN: + php_error_docref(NULL TSRMLS_CC, E_WARNING, "A temporary server error occurred."); + break; + + default: + php_error_docref(NULL TSRMLS_CC, E_WARNING, "DNS Query failed"); } + zval_dtor(return_value); + RETURN_FALSE; } cp = answer.qb2 + HFIXEDSZ; |