[ 
https://issues.apache.org/jira/browse/THRIFT-2156?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13819485#comment-13819485
 ] 

Jens Geyer edited comment on THRIFT-2156 at 11/11/13 10:08 PM:
---------------------------------------------------------------

Hi [~bmeerkoetter],

I had some problems applying the patch, it may need a rebasing. Next, I think 
you missed one occurrence:

{code}
    // retrieve bind info
    if (port_ == 0 && retries <= retryLimit_) {
      struct sockaddr sa;
      socklen_t len = sizeof(sa);
      std::memset(&sa, 0, len);
      if (::getsockname(serverSocket_, &sa, &len) < 0) {
        int errno_copy = errno;
        GlobalOutput.perror("TServerSocket::getPort() getsockname() ", 
errno_copy);
      }
      else {
         ... more code ...
{code}

IMHO the "int" before "errno_copy = errno;" should be removed here as well, 
otherwise the errno will be forgotten immediately after printing it into the 
GlobalOutput. Correct?


was (Author: jensg):
Hi [~bmeerkoetter],

I had some problems applying the patch, it may need a rebasing. Next, I think 
you missed one occurrence:

{code}
    // retrieve bind info
    if (port_ == 0 && retries <= retryLimit_) {
      struct sockaddr sa;
      socklen_t len = sizeof(sa);
      std::memset(&sa, 0, len);
      if (::getsockname(serverSocket_, &sa, &len) < 0) {
        int errno_copy = errno;
        GlobalOutput.perror("TServerSocket::getPort() getsockname() ", 
errno_copy);
      }
      else {
         ... more code ...
{code}

IMHO the {int} should be removed here as well, otherwise the errno will be 
forgotten immediately after printing it into the GlobalOutput.

> TServerSocket::listen() is throwing exceptions with misleading information
> --------------------------------------------------------------------------
>
>                 Key: THRIFT-2156
>                 URL: https://issues.apache.org/jira/browse/THRIFT-2156
>             Project: Thrift
>          Issue Type: Bug
>          Components: C++ - Library
>    Affects Versions: 0.9
>            Reporter: Frank Meerkoetter
>            Priority: Minor
>         Attachments: errno_copy.patch
>
>
> Due to a problem with bind() an exception was thrown.
> The text was:
> "Could not bind: Transport endpoint is not connected"
> which doesn't make sense.
> It turned out that errno had been overwritten.
> The correct text would have been:
> "Could not bind: Address already in use"



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to