Skip to content

Commit

Permalink
THRIFT-4659: Fix race when closing server socket (apache#1645)
Browse files Browse the repository at this point in the history
Client: go
  • Loading branch information
jgheewala authored and dcelasun committed Dec 11, 2018
1 parent 880c71b commit c4de196
Showing 1 changed file with 9 additions and 6 deletions.
15 changes: 9 additions & 6 deletions server_socket.go
Expand Up @@ -75,7 +75,9 @@ func (p *TServerSocket) Accept() (TTransport, error) {
return nil, errTransportInterrupted
}

p.mu.Lock()
listener := p.listener
p.mu.Unlock()
if listener == nil {
return nil, NewTTransportException(NOT_OPEN, "No underlying server socket")
}
Expand Down Expand Up @@ -115,19 +117,20 @@ func (p *TServerSocket) Addr() net.Addr {
}

func (p *TServerSocket) Close() error {
defer func() {
p.listener = nil
}()
var err error
p.mu.Lock()
if p.IsListening() {
return p.listener.Close()
err = p.listener.Close()
p.listener = nil
}
return nil
p.mu.Unlock()
return err
}

func (p *TServerSocket) Interrupt() error {
p.mu.Lock()
defer p.mu.Unlock()
p.interrupted = true
p.mu.Unlock()
p.Close()

return nil
Expand Down

0 comments on commit c4de196

Please sign in to comment.