THRIFT-3225 Fix TPipeServer unpredictable behavior on close
Client: C++
Patch: Paweł Janicki
diff --git a/lib/cpp/src/thrift/transport/TPipeServer.cpp b/lib/cpp/src/thrift/transport/TPipeServer.cpp
index 3779d7f..44295f1 100644
--- a/lib/cpp/src/thrift/transport/TPipeServer.cpp
+++ b/lib/cpp/src/thrift/transport/TPipeServer.cpp
@@ -119,7 +119,10 @@
     }
   }
 
-  virtual void close() { Pipe_.reset(); }
+  virtual void close() { 
+    TAutoCrit lock(pipe_protect_);
+    Pipe_.reset(); 
+  }
 
   virtual boost::shared_ptr<TTransport> acceptImpl();