connection.go | 43 ++++++++++++++++++++----------------------- diff --git a/connection.go b/connection.go index 6b83868ee4b92bfd24c97778c0962eca6fae8636..c52328a0e6a68ef98b8f16d1aca9c8c26e5d4355 100644 --- a/connection.go +++ b/connection.go @@ -892,32 +892,29 @@ } if v, ok := d["v"]; ok { c.PeerClientName = v.(string) } - m, ok := d["m"] - if !ok { - err = errors.New("handshake missing m item") - break - } - mTyped, ok := m.(map[string]interface{}) - if !ok { - err = errors.New("handshake m value is not dict") - break - } - if c.PeerExtensionIDs == nil { - c.PeerExtensionIDs = make(map[string]byte, len(mTyped)) - } - for name, v := range mTyped { - id, ok := v.(int64) + if m, ok := d["m"]; ok { + mTyped, ok := m.(map[string]interface{}) if !ok { - log.Printf("bad handshake m item extension ID type: %T", v) - continue + err = errors.New("handshake m value is not dict") + break + } + if c.PeerExtensionIDs == nil { + c.PeerExtensionIDs = make(map[string]byte, len(mTyped)) } - if id == 0 { - delete(c.PeerExtensionIDs, name) - } else { - if c.PeerExtensionIDs[name] == 0 { - supportedExtensionMessages.Add(name, 1) + for name, v := range mTyped { + id, ok := v.(int64) + if !ok { + log.Printf("bad handshake m item extension ID type: %T", v) + continue + } + if id == 0 { + delete(c.PeerExtensionIDs, name) + } else { + if c.PeerExtensionIDs[name] == 0 { + supportedExtensionMessages.Add(name, 1) + } + c.PeerExtensionIDs[name] = byte(id) } - c.PeerExtensionIDs[name] = byte(id) } } metadata_sizeUntyped, ok := d["metadata_size"]