nodeInfo := NodeInfo{
Addr: t.remoteAddr,
}
- copy(nodeInfo.ID[:], m.ID())
+ copy(nodeInfo.ID[:], m.SenderID())
select {
case me.values <- PeersValues{
Peers: vs,
return
}
-func (m Msg) ID() string {
+func (m Msg) Args() map[string]interface{} {
defer func() {
recover()
}()
- return m[m["y"].(string)].(map[string]interface{})["id"].(string)
+ return m["a"].(map[string]interface{})
+}
+
+func (m Msg) SenderID() string {
+ defer func() {
+ recover()
+ }()
+ switch m["y"].(string) {
+ case "q":
+ return m.Args()["id"].(string)
+ case "r":
+ return m["r"].(map[string]interface{})["id"].(string)
+ }
+ return ""
}
// Suggested nodes in a response.
//log.Printf("unexpected message: %#v", d)
return
}
- node := s.getNode(addr, d.ID())
+ node := s.getNode(addr, d.SenderID())
node.lastGotResponse = time.Now()
// TODO: Update node ID as this is an authoritative packet.
go t.handleResponse(d)
s.liftNodes(m)
at, ok := m.AnnounceToken()
if ok {
- s.getNode(addr, m.ID()).announceToken = at
+ s.getNode(addr, m.SenderID()).announceToken = at
}
})
return
defer tn.Close()
ok := make(chan bool)
tn.SetResponseHandler(func(msg Msg) {
- ok <- msg.ID() == srv0.ID()
+ ok <- msg.SenderID() == srv0.ID()
})
if !<-ok {
t.FailNow()