Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
0.9
-
None
-
None
-
64-bit Windows
Description
On 64-bit Windows, "int" is a 32-bit value. SOCKET and HANDLE are 64-bit.
All of the files dealing with sockets in thrift use "int" as the type of a socket, as this is the idiomatic way to handle sockets on POSIX systems. For portability, a SOCKET typedef is probably needed.
For the Pipe Server and Pipe Transport, HANDLEs are cast to ints to store as member variables for some reason (maybe to avoid #including <windows.h> in a header?).
Both of these situations can result in invalid handles being used (and valid handles being leaked) when the system is under load.