diff options
Diffstat (limited to 'ext/standard/dns.c')
-rw-r--r-- | ext/standard/dns.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/ext/standard/dns.c b/ext/standard/dns.c index 0b5e69ca5..a67397470 100644 --- a/ext/standard/dns.c +++ b/ext/standard/dns.c @@ -897,7 +897,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; |