4 Commits

Author SHA1 Message Date
decanus
a26faf0145 merged 2019-06-22 01:26:30 +02:00
decanus
5aa789e474 merged 2019-06-10 12:25:34 -07:00
decanus
d704571299 handle messages before offers incease we are offered a message we just received 2019-05-30 14:00:24 -04:00
decanus
786cff711a updated 2019-05-30 13:48:28 -04:00

View File

@@ -217,22 +217,26 @@ func (n *Node) onPayload(group state.GroupID, sender state.PeerID, payload proto
// Acks, Requests and Offers are all arrays of bytes as protobuf doesn't allow type aliases otherwise arrays of messageIDs would be nicer.
n.onAck(group, sender, payload.Acks)
n.onRequest(group, sender, payload.Requests)
n.onOffer(group, sender, payload.Offers)
n.payloads.AddAcks(group, sender, n.onOffer(group, sender, payload.Offers)...)
n.payloads.AddAcks(group, sender, n.onMessages(group, sender, payload.Messages)...)
}
func (n *Node) onOffer(group state.GroupID, sender state.PeerID, offers [][]byte) {
func (n *Node) onOffer(group state.GroupID, sender state.PeerID, offers [][]byte) [][]byte {
acks := make([][]byte, 0)
for _, raw := range offers {
id := toMessageID(raw)
log.Printf("[%x] OFFER (%x -> %x): %x received.\n", group[:4], sender[:4], n.ID[:4], id[:4])
// @todo maybe ack?
if n.store.Has(id) {
acks = append(acks, raw)
continue
}
n.insertSyncState(group, id, sender, state.REQUEST)
}
return acks
}
func (n *Node) onRequest(group state.GroupID, sender state.PeerID, requests [][]byte) {