thrift-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Peace C (Updated) (JIRA)" <>
Subject [jira] [Updated] (THRIFT-1433) TServerSocket fix for MSVC
Date Thu, 01 Dec 2011 22:30:43 GMT


Peace C updated THRIFT-1433:

    Attachment: TServerSocket_bind_alternate2.patch

Updated patch (removed the extraneous changes to TSimpleServer.cpp)
> TServerSocket fix for MSVC
> --------------------------
>                 Key: THRIFT-1433
>                 URL:
>             Project: Thrift
>          Issue Type: Bug
>          Components: C++ - Library
>    Affects Versions: 0.8
>         Environment: Windows Visual Studio 2010
>            Reporter: Peace C
>              Labels: TServerSocket,, bind,, socket,
>             Fix For: 0.9
>         Attachments: TServerSocket_bind.patch, TServerSocket_bind_alternate.patch, TServerSocket_bind_alternate2.patch
> The changes to compile the Thrift library for Visual Studio #ifdef'd out the bind section
in TServerSocket.cpp. This prevented TSimpleServer, TThreadedServer and anything that uses
TServerSocket transport from functioning.  The server side reports the following error due
to 'bind' being skipped:
> TSimpleServer::run() listen(): Could not listen: errno = 10022
> The bind overload unfortunately results in a conflict with Microsoft's libraries. TServerSocket
uses namespace std which pulls in the tr1 overloads of bind. The template definitions seem
to always 'win' over any other overloads. I was unsuccessful creating an overload of bind
in the windows config.h file so had to #ifdef the bind call. Microsoft is aware of the issue:
> It does the job though I'm not too proud of using #ifdefs. One possible way around this
is to declare a wrapper function as such in config.h:
> inline int thriftbind(SOCKET socket, sockaddr* name, int namelen)
> {
>     return ::bind(socket, name, namelen);
> }
> The Unix-style version would need to be declared in the appropriate file as well.

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


View raw message