--- lib/cpp/src/server/TNonblockingServer.cpp +++ lib/cpp/src/server/TNonblockingServer.cpp @@ -989,8 +989,8 @@ hints.ai_flags = AI_PASSIVE | AI_ADDRCONFIG; sprintf(port, "%d", port_); - // Wildcard address - error = getaddrinfo(NULL, port, &hints, &res0); + // Wildcard or specified address + error = getaddrinfo(host_ == "" || host_ =="*"? NULL : host_.c_str(), port, &hints, &res0); if (error) { string errStr = "TNonblockingServer::serve() getaddrinfo " + string(gai_strerror(error)); GlobalOutput(errStr.c_str()); --- lib/cpp/src/server/TNonblockingServer.h +++ lib/cpp/src/server/TNonblockingServer.h @@ -126,6 +126,9 @@ /// Server socket file descriptor int serverSocket_; + /// Host server runs on + std::string host_; + /// Port server runs on int port_; @@ -294,11 +297,13 @@ TNonblockingServer( const boost::shared_ptr& processor, const boost::shared_ptr& protocolFactory, + const std::string host, int port, const boost::shared_ptr& threadManager = boost::shared_ptr(), THRIFT_OVERLOAD_IF(Processor, TProcessor)) : - TServer(processor) { + TServer(processor), + host_(host) { init(port);