Skip to content
Snippets Groups Projects
Commit 29f2a210 authored by Jake Taylor's avatar Jake Taylor :lips:
Browse files

Merge branch 'hotfix/DroppedGrpMessage' into 'release'

Hotfix/dropped grp message

See merge request !222
parents 02d89aff f2f9d37c
No related branches found
No related tags found
3 merge requests!233Modify restore to call user-defined bindings callback. Add Sent requests to...,!231Revert "Update store to print changes to the partners list",!222Hotfix/dropped grp message
......@@ -42,11 +42,17 @@ func (m Manager) receive(rawMsgs chan message.Receive, stop *stoppable.Single) {
stop.ToStopped()
return
case receiveMsg := <-rawMsgs:
jww.TRACE.Print("Group message reception received cMix message.")
jww.DEBUG.Printf("Group message reception received cMix message on round %d (%d).",
receiveMsg.RoundId, receiveMsg.RoundTimestamp.Unix())
// If given zero time, try to guesstimate roundTimestamp as right now
if receiveMsg.RoundTimestamp.Equal(time.Unix(0, 0)) {
jww.ERROR.Printf("getCryptKey missing roundTimestamp")
receiveMsg.RoundTimestamp = time.Now()
}
// Attempt to read the message
g, msgID, timestamp, senderID, msg, noFpMatch, err :=
m.readMessage(receiveMsg)
g, msgID, timestamp, senderID, msg, noFpMatch, err := m.readMessage(receiveMsg)
if err != nil {
if noFpMatch {
jww.TRACE.Printf("Received message not for group chat: %+v",
......@@ -145,6 +151,9 @@ func (m *Manager) decryptMessage(g gs.Group, cMixMsg format.Message,
messageID := group.NewMessageID(g.ID, intlMsg.Marshal())
// Remove from garbled message on success to prevent reprocessing
m.store.GetGarbledMessages().Remove(cMixMsg)
return messageID, intlMsg.GetTimestamp(), senderID, intlMsg.GetPayload(), nil
}
......
......@@ -109,11 +109,11 @@ func (m *Manager) handleGarbledMessages() {
MessageType: message.Raw,
Sender: &id.ID{},
EphemeralID: ephemeral.Id{},
Timestamp: time.Time{},
Timestamp: time.Unix(0, 0),
Encryption: message.None,
RecipientID: &id.ID{},
RoundId: 0,
RoundTimestamp: time.Time{},
RoundTimestamp: time.Unix(0, 0),
}
im := fmt.Sprintf("[GARBLE] RAW Message reprocessed: keyFP: %v, "+
"msgDigest: %s", grbldMsg.GetKeyFP(), grbldMsg.Digest())
......
......@@ -119,7 +119,9 @@ func (m *Manager) handleMessage(ecrMsg format.Message, bundle Bundle, edge *edge
Encryption: message.None,
RecipientID: identity.Source,
RoundId: id.Round(bundle.RoundInfo.ID),
RoundTimestamp: time.Unix(0, int64(bundle.RoundInfo.Timestamps[states.QUEUED])),
// We use PRECOMPUTING here because all Rounds have that timestamp available to them
// QUEUED can be missing sometimes and cause a lot of hidden problems further down the line
RoundTimestamp: time.Unix(0, int64(bundle.RoundInfo.Timestamps[states.PRECOMPUTING])),
}
im := fmt.Sprintf("Received message of type Garbled/RAW: keyFP: %v, round: %d, "+
"msgDigest: %s", msg.GetKeyFP(), bundle.Round, msg.Digest())
......
......@@ -63,7 +63,7 @@ func (m *Manager) GetMessagesFromRound(roundID id.Round, identity reception.Iden
jww.INFO.Printf("Messages found in round %d for %d (%s), looking "+
"up messages via historical lookup", roundID, identity.EphId.Int64(),
identity.Source)
//store the round as an unretreived round
//store the round as an unreceived round
err = m.Session.UncheckedRounds().AddRound(roundID, nil,
identity.Source, identity.EphId)
if err != nil {
......@@ -79,7 +79,7 @@ func (m *Manager) GetMessagesFromRound(roundID id.Round, identity reception.Iden
jww.INFO.Printf("Messages found in round %d for %d (%s), looking "+
"up messages via in ram lookup", roundID, identity.EphId.Int64(),
identity.Source)
//store the round as an unretreived round
//store the round as an unreceived round
if !m.params.RealtimeOnly {
err = m.Session.UncheckedRounds().AddRound(roundID, ri,
identity.Source, identity.EphId)
......
......@@ -120,7 +120,7 @@ func (m *Manager) processHistoricalRounds(comm historicalRoundsComms, stop *stop
// process the returned historical roundRequests.
for i, roundInfo := range response.Rounds {
// The interface has missing returns returned as nil, such roundRequests
// need be be removes as processing so the network follower will
// need to be removes as processing so the network follower will
// pick them up in the future.
if roundInfo == nil {
var errMsg string
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment