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();