[
https://issues.apache.org/jira/browse/THRIFT-1433?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13165143#comment-13165143
]
Roger Meier commented on THRIFT-1433:
-------------------------------------
Thanks Peace
could you recreate the patch [^TServerSocket_bind_alternate2.patch] please, it
does not apply anymore to trunk
{noformat}
git apply TServerSocket_bind_alternate2.patch
TServerSocket_bind_alternate2.patch:9: trailing whitespace.
if (0 == ::bind(serverSocket_, (struct sockaddr *) &address, len)) {
TServerSocket_bind_alternate2.patch:14: trailing whitespace.
#else
TServerSocket_bind_alternate2.patch:15: trailing whitespace.
GlobalOutput.perror("TSocket::open() Unix Domain socket path not supported
on windows", -99);
TServerSocket_bind_alternate2.patch:16: trailing whitespace.
throw TTransportException(TTransportException::NOT_OPEN, " Unix Domain
socket path not supported");
TServerSocket_bind_alternate2.patch:17: trailing whitespace.
#endif
error: patch failed: lib/cpp/src/transport/TServerSocket.cpp:310
error: lib/cpp/src/transport/TServerSocket.cpp: patch does not apply
error: patch failed: lib/cpp/src/windows/config.h:72
error: lib/cpp/src/windows/config.h: patch does not apply
{noformat}
Thanks!
Roger
> TServerSocket fix for MSVC
> --------------------------
>
> Key: THRIFT-1433
> URL: https://issues.apache.org/jira/browse/THRIFT-1433
> 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_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:
> http://connect.microsoft.com/VisualStudio/feedback/details/500364/how-to-avoid-conflicts-between-tr1-bind-and-winsock-bind-function
> 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:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira