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

Jake Farrell closed THRIFT-1676.
--------------------------------

       Resolution: Duplicate
    Fix Version/s: 0.9

Duplicates THRIFT-1025 and THRIFT-1508
                
> Allow specifying IP/hostname in TServer::serve
> ----------------------------------------------
>
>                 Key: THRIFT-1676
>                 URL: https://issues.apache.org/jira/browse/THRIFT-1676
>             Project: Thrift
>          Issue Type: Improvement
>          Components: C++ - Library
>    Affects Versions: 0.8
>         Environment: Mac OS X. Thrift 0.8.0.
>            Reporter: Diwaker Gupta
>            Assignee: Jake Farrell
>             Fix For: 0.9
>
>
> Thrift doesn't allow users to specify which IP/hostname to use for bind. As a 
> result, a Thrift server usually ends up listening on ALL interfaces on a 
> machine (bind uses INADDR_ANY). This is clearly undesirable in many cases 
> where we may want to restrict connectivity to localhost or to within a 
> particular subnet or targeted towards a specific host or IP.
> Here's a example of what TNonblockingServer does:
> {code}
> // Wildcard address
>   error = getaddrinfo(NULL, port, &hints, &res0);
>   if (error) {
>     throw TException("TNonblockingServer::serve() getaddrinfo " +
>                      string(gai_strerror(error)));
>   }
>   // Pick the ipv6 address first since ipv4 addresses can be mapped
>   // into ipv6 space.
>   for (res = res0; res; res = res->ai_next) {
>     if (res->ai_family == AF_INET6 || res->ai_next == NULL)
>       break;
>   }
> {code}
> As can be seen, the above code fragment provides NULL as the first param to 
> getaddrinfo and always specifies AI_PASSIVE. This results in the behavior I 
> described above.
> A better approach IMO is to provide the following interface instead:
> {code}
> TServer::serve(const char* hostOrIp, int port)
> {code}
> This is consistent with what other modern server frameworks do (node.js, 
> netty etc.)

--
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

        

Reply via email to