提交 ecddbd3a 作者: Brian Tiger Chow

fix(mux) hold lock when reading default handler field

上级 d0e5538b
......@@ -24,11 +24,11 @@ type streamHandlerMap map[ID]inet.StreamHandler
// It contains the handlers for each protocol accepted.
// It dispatches handlers for streams opened by remote peers.
type Mux struct {
// defaultHandler handles unknown protocols. Callers modify at your own risk.
defaultHandler inet.StreamHandler
lock sync.RWMutex
handlers streamHandlerMap
// defaultHandler handles unknown protocols. Callers modify at your own risk.
defaultHandler inet.StreamHandler
}
func NewMux() *Mux {
......@@ -59,8 +59,8 @@ func (m *Mux) readHeader(s io.Reader) (ID, inet.StreamHandler, error) {
// log.Debug("readHeader got:", p)
m.lock.RLock()
defer m.lock.RUnlock()
h, found := m.handlers[p]
m.lock.RUnlock()
switch {
case !found && m.defaultHandler != nil:
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论