THRIFT-4237 Fix effective deadlock introduced by original patch
Client: Go
Patch: Zachary Wasserman <zachwass2000@gmail.com>
This closes #1304
diff --git a/lib/go/thrift/server_socket.go b/lib/go/thrift/server_socket.go
index 68c9a02..80313c4 100644
--- a/lib/go/thrift/server_socket.go
+++ b/lib/go/thrift/server_socket.go
@@ -68,15 +68,19 @@
func (p *TServerSocket) Accept() (TTransport, error) {
p.mu.RLock()
- defer p.mu.RUnlock()
+ interrupted := p.interrupted
+ p.mu.RUnlock()
- if p.interrupted {
+ if interrupted {
return nil, errTransportInterrupted
}
- if p.listener == nil {
+
+ listener := p.listener
+ if listener == nil {
return nil, NewTTransportException(NOT_OPEN, "No underlying server socket")
}
- conn, err := p.listener.Accept()
+
+ conn, err := listener.Accept()
if err != nil {
return nil, NewTTransportExceptionFromError(err)
}