[ 
https://issues.apache.org/jira/browse/THRIFT-497?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Rush Manbert updated THRIFT-497:
--------------------------------

    Attachment: 497-TSocket.cpp.patch

Patch fr TSocket.cpp.

> TSocket read/peek fails on OS X
> -------------------------------
>
>                 Key: THRIFT-497
>                 URL: https://issues.apache.org/jira/browse/THRIFT-497
>             Project: Thrift
>          Issue Type: Bug
>          Components: Library (C++)
>    Affects Versions: 0.1
>         Environment: Mac OS X 10.5.6
>            Reporter: Rush Manbert
>         Attachments: 497-TSocket.cpp.patch
>
>
> Both TSocket::read() and TSocket::peek() have code that detects ECONNRESET in 
> a FreeBSD environment and interprets it to mean that the socket was closed by 
> the other side. This code was added by THRIFT-96.
> When Thrift is used under OS X, the server often sees the ECONNRESET error 
> when the client has simply shutdown the socket. This makes sense since OS X 
> is derived from FreeBSD.
> The attached patch modifies the read() and peek() routines to treat 
> ECONNRESET as close() for OS X, just like it does for other FreeBSD versions. 
> It also moves the read() error message display so that no error message is 
> displayed when ECONNRESET is interpreted as close.
> Just past the error message, I left the test for ECONNRESET without making it 
> depend on the __FREEBSD__ and __MACH__ macro definitions. This means that if 
> a real error occurs on a FreeBSD-based system, there will be an extra check 
> for ECONNRESET. I don't think this is a problem because you're on the way to 
> throwing an exception anyway in that case, so the performance penalty of 
> checking for ECONNRESET seems minimal. It also keeps the logic simpler.
> Patrick Schlangen gets credit for realizing that the __FREEBSD__ fix applied 
> to OS X as well.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to