}
} else {
#endif
- struct hostent *he;
+ const struct hostent *he;
/* Windows doesn't seem to have in_addr_t */
#ifdef OPENSSL_SYS_WINDOWS
- uint32_t he_fallback_address = INADDR_ANY;
- uint32_t *he_fallback_addresses[] = { &he_fallback_address, NULL };
+ static uint32_t he_fallback_address;
+ static const uint32_t *he_fallback_addresses[] =
+ { &he_fallback_address, NULL };
#else
- in_addr_t he_fallback_address = INADDR_ANY;
- in_addr_t *he_fallback_addresses[] = { &he_fallback_address, NULL };
+ static in_addr_t he_fallback_address;
+ static const in_addr_t *he_fallback_addresses[] =
+ { &he_fallback_address, NULL };
#endif
- struct hostent he_fallback = { NULL, NULL, AF_INET,
- sizeof(he_fallback_address),
- (char **)&he_fallback_addresses };
+ static const struct hostent he_fallback =
+ { NULL, NULL, AF_INET, sizeof(he_fallback_address),
+ (char **)&he_fallback_addresses };
struct servent *se;
/* Apprently, on WIN64, s_proto and s_port have traded places... */
#ifdef _WIN64
CRYPTO_w_lock(CRYPTO_LOCK_GETHOSTBYNAME);
CRYPTO_w_lock(CRYPTO_LOCK_GETSERVBYNAME);
+ he_fallback_address = INADDR_ANY;
if (host == NULL) {
he = &he_fallback;
switch(lookup_type) {
he = gethostbyname(host);
if (he == NULL) {
+#ifndef OPENSSL_SYS_WINDOWS
BIOerr(BIO_F_BIO_LOOKUP, ERR_R_SYS_LIB);
ERR_add_error_data(1, hstrerror(h_errno));
+#else
+ SYSerr(SYS_F_GETHOSTBYNAME, WSAGetLastError());
+#endif
ret = 0;
goto err;
}
se = getservbyname(service, proto);
if (se == NULL) {
+#ifndef OPENSSL_SYS_WINDOWS
BIOerr(BIO_F_BIO_LOOKUP, ERR_R_SYS_LIB);
ERR_add_error_data(1, hstrerror(h_errno));
+#else
+ SYSerr(SYS_F_GETSERVBYNAME, WSAGetLastError());
+#endif
goto err;
}
} else {