diff --git a/ext/standard/dns.c b/ext/standard/dns.c index 214a7dc7e92fa..7672a3b93bea8 100644 --- a/ext/standard/dns.c +++ b/ext/standard/dns.c @@ -861,7 +861,24 @@ PHP_FUNCTION(dns_get_record) if (n < 0) { php_dns_free_handle(handle); - continue; + 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; diff --git a/ext/standard/dns_win32.c b/ext/standard/dns_win32.c index a784823dd37c1..0840e17d8582c 100644 --- a/ext/standard/dns_win32.c +++ b/ext/standard/dns_win32.c @@ -458,7 +458,7 @@ PHP_FUNCTION(dns_get_record) if (status == DNS_INFO_NO_RECORDS || status == DNS_ERROR_RCODE_NAME_ERROR) { continue; } else { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Dns Query failed"); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "DNS Query failed"); zval_dtor(return_value); RETURN_FALSE; }