Adds mutex when reading goaway flag

This commit is contained in:
Gian Biondi
2015-04-30 14:04:47 -04:00
parent 6fa6f0b130
commit 3ea7cd9385

View File

@ -130,7 +130,6 @@ func newHTTP2Server(conn net.Conn, maxStreams uint32) (_ ServerTransport, err er
shutdownChan: make(chan struct{}), shutdownChan: make(chan struct{}),
activeStreams: make(map[uint32]*Stream), activeStreams: make(map[uint32]*Stream),
streamSendQuota: defaultWindowSize, streamSendQuota: defaultWindowSize,
goaway: false,
} }
go t.controller() go t.controller()
t.writableChan <- 0 t.writableChan <- 0
@ -165,11 +164,12 @@ func (t *http2Server) operateHeaders(hDec *hpackDecoder, s *Stream, frame header
if !endHeaders { if !endHeaders {
return s return s
} }
t.mu.Lock()
if t.goaway { if t.goaway {
//Stop creating streams on this transport //Stop creating streams on this transport
t.mu.Unlock()
return nil return nil
} }
t.mu.Lock()
if t.state != reachable { if t.state != reachable {
t.mu.Unlock() t.mu.Unlock()
return nil return nil