THRIFT-2441 ccp: Cannot shutdown TThreadedServer when clients are still connected
diff --git a/lib/cpp/src/thrift/server/TThreadedServer.cpp b/lib/cpp/src/thrift/server/TThreadedServer.cpp
index 929ed86..380f69c 100644
--- a/lib/cpp/src/thrift/server/TThreadedServer.cpp
+++ b/lib/cpp/src/thrift/server/TThreadedServer.cpp
@@ -55,6 +55,10 @@
~Task() {}
+ void stop() {
+ input_->getTransport()->close();
+ }
+
void run() {
boost::shared_ptr<TServerEventHandler> eventHandler = server_.getEventHandler();
void* connectionContext = NULL;
@@ -236,6 +240,8 @@
}
try {
Synchronized s(tasksMonitor_);
+ for ( std::set<Task*>::iterator tIt = tasks_.begin(); tIt != tasks_.end(); ++tIt )
+ (*tIt)->stop();
while (!tasks_.empty()) {
tasksMonitor_.wait();
}