THRIFT-3753 TServerFramework::stop may fail to interrupt connected clients
Client: C++
Patch: tpcwang <tpc.wang@gmail.com>

This closes #959
diff --git a/lib/cpp/src/thrift/server/TServerFramework.cpp b/lib/cpp/src/thrift/server/TServerFramework.cpp
index c617ad0..ea78bcd 100644
--- a/lib/cpp/src/thrift/server/TServerFramework.cpp
+++ b/lib/cpp/src/thrift/server/TServerFramework.cpp
@@ -214,8 +214,10 @@
 }
 
 void TServerFramework::stop() {
-  serverTransport_->interrupt();
+  // Order is important because serve() releases serverTransport_ when it is
+  // interrupted, which closes the socket that interruptChildren uses.
   serverTransport_->interruptChildren();
+  serverTransport_->interrupt();
 }
 
 void TServerFramework::newlyConnectedClient(const boost::shared_ptr<TConnectedClient>& pClient) {