Commit 63be1415 authored by Tomas Mraz's avatar Tomas Mraz
Browse files

BIO_lookup_ex: Always retry the lookup on failure with AI_NUMERICHOST set



Do not try to discern the error return value on
getaddrinfo() failure but when retrying set the AI_NUMERICHOST
to avoid DNS lookups.

Fixes: #9053

Reviewed-by: default avatarPaul Dale <paul.dale@oracle.com>
Reviewed-by: default avatarRichard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/9535)

(cherry picked from commit 7f616a00e9232392927099dca1eca70d0d058665)
parent e17a712e
Loading
Loading
Loading
Loading
+3 −9
Original line number Diff line number Diff line
@@ -707,20 +707,14 @@ int BIO_lookup_ex(const char *host, const char *service, int lookup_type,
        case 0:
            ret = 1;             /* Success */
            break;
# if (defined(EAI_FAMILY) || defined(EAI_ADDRFAMILY)) && defined(AI_ADDRCONFIG)
#  ifdef EAI_FAMILY
        case EAI_FAMILY:
#  endif
#  ifdef EAI_ADDRFAMILY
        case EAI_ADDRFAMILY:
#  endif
        default:
# if defined(AI_ADDRCONFIG) && defined(AI_NUMERICHOST)
            if (hints.ai_flags & AI_ADDRCONFIG) {
                hints.ai_flags &= ~AI_ADDRCONFIG;
                hints.ai_flags |= AI_NUMERICHOST;
                goto retry;
            }
# endif
            /* fall through */
        default:
            BIOerr(BIO_F_BIO_LOOKUP_EX, ERR_R_SYS_LIB);
            ERR_add_error_data(1, gai_strerror(gai_ret));
            break;