The "m" field in the extended handshake is not mandatory
This commit is contained in:
parent
2f8a2ada2e
commit
1b9606ae75
@ -892,32 +892,29 @@ func (c *connection) mainReadLoop() error {
|
|||||||
if v, ok := d["v"]; ok {
|
if v, ok := d["v"]; ok {
|
||||||
c.PeerClientName = v.(string)
|
c.PeerClientName = v.(string)
|
||||||
}
|
}
|
||||||
m, ok := d["m"]
|
if m, ok := d["m"]; ok {
|
||||||
if !ok {
|
mTyped, ok := m.(map[string]interface{})
|
||||||
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 !ok {
|
if !ok {
|
||||||
log.Printf("bad handshake m item extension ID type: %T", v)
|
err = errors.New("handshake m value is not dict")
|
||||||
continue
|
break
|
||||||
}
|
}
|
||||||
if id == 0 {
|
if c.PeerExtensionIDs == nil {
|
||||||
delete(c.PeerExtensionIDs, name)
|
c.PeerExtensionIDs = make(map[string]byte, len(mTyped))
|
||||||
} else {
|
}
|
||||||
if c.PeerExtensionIDs[name] == 0 {
|
for name, v := range mTyped {
|
||||||
supportedExtensionMessages.Add(name, 1)
|
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"]
|
metadata_sizeUntyped, ok := d["metadata_size"]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user