goto err;
}
- /* cast to short because of win16 winsock definition */
- if ((short)he->h_addrtype != AF_INET)
+ if (he->h_addrtype != AF_INET)
{
BIOerr(BIO_F_BIO_GET_HOST_IP,BIO_R_GETHOSTBYNAME_ADDR_IS_NOT_AF_INET);
goto err;
int BIO_sock_error(int sock)
{
int j,i;
- int size;
+ union { size_t s; int i; } size;
-#if defined(OPENSSL_SYS_BEOS_R5)
- return 0;
-#endif
-
- size=sizeof(int);
+ /* heuristic way to adapt for platforms that expect 64-bit optlen */
+ size.s=0, size.i=sizeof(j);
/* Note: under Windows the third parameter is of type (char *)
* whereas under other systems it is (void *) if you don't have
* a cast it will choke the compiler: if you do have a cast then
i=ioctlsocket(fd,type,(char *)arg);
#else
# if defined(OPENSSL_SYS_VMS)
- /* 2011-02-18 SMS.
+ /*-
+ * 2011-02-18 SMS.
* VMS ioctl() can't tolerate a 64-bit "void *arg", but we
* observe that all the consumers pass in an "unsigned long *",
* so we arrange a local copy with a short pointer, and use
* note that commonly IPv6 wildchard socket can service
* IPv4 connections just as well... */
memset(&hint,0,sizeof(hint));
+ hint.ai_flags = AI_PASSIVE;
if (h)
{
if (strchr(h,':'))
#endif
}
else if (h[0]=='*' && h[1]=='\0')
+ {
+ hint.ai_family = AF_INET;
h=NULL;
+ }
}
if ((*p_getaddrinfo.f)(h,p,&hint,&res)) break;
#endif
return(ret == 0);
}
-#endif
int BIO_socket_nbio(int s, int mode)
{
#endif
return(ret == 0);
}
+#endif