On Windows, the socket function returns a value of type SOCKET (i.e. 
*not* int).  On 64 bit Windows (at least, Windows XP x64), SOCKET is 
defined as unsigned __int64.

Sockets have to be passed to the openssl library using the call 
SSL_set_fd.  This functions accepts an int to pass the socket value. 
When you do this, the compiler will complain about loosing possibly 
significant bits (32 of them), and the compiler is entirely correct in 
this assessment.  Using a cast doesn't help: you still loose those bits.

The solution, it seems to me, is to go through the code and change all 
places where sockets are used to make them of type SOCKET (and define 
SOCKET to int for systems other than Windows).

This problem occurs in openssl version 0.9.8k and 1.0.0-beta2.

-- 
Sjoerd Mullender

______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       [email protected]
Automated List Manager                           [email protected]

Reply via email to