thrift-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Peace C (JIRA)" <>
Subject [jira] [Commented] (THRIFT-1690) Sockets and Pipe Handles truncated on Win64
Date Wed, 14 Nov 2012 16:42:13 GMT


Peace C commented on THRIFT-1690:

One of the goals was to abstract away the platform-specific code (#ifdefs and such) into the
transport, allowing the calling code to be uniform across platforms. As it stands now, both
the Pipe transport code has #ifdefs, and code that calls it needs to employ #ifdefs. The calling
code shouldn't care how the transport implements it, just that it's a local transport, be
it named pipes or domain sockets. Otherwise apps that use Thrift would needlessly require
redundant code "if (Windows) -> use Pipe code, if (Unix) -> use dskt code".

I agree the #ifdefs are ugly and I wish they could be avoided. I think you'd agree that if
they have to be there, it's better to abstract it away into the transport instead of placing
that burden on every code that uses it.
> Sockets and Pipe Handles truncated on Win64
> -------------------------------------------
>                 Key: THRIFT-1690
>                 URL:
>             Project: Thrift
>          Issue Type: Bug
>          Components: C++ - Library
>    Affects Versions: 0.9
>         Environment: 64-bit Windows
>            Reporter: Ben Craig
>            Assignee: Roger Meier
>         Attachments: lib_socket_typedef.patch, libthrift_pipe_size.patch, libthrift_warning_purge.patch
>   Original Estimate: 48h
>  Remaining Estimate: 48h
> 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.

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:

View raw message