From bff922df350a4baf743cc6ecbadb87ef6d2f3335 Mon Sep 17 00:00:00 2001 From: Sarah Jamie Lewis Date: Tue, 2 Nov 2021 12:17:56 -0700 Subject: [PATCH 1/2] Temporarily ignore timeline dedupelication for p2p messags. --- model/message.go | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/model/message.go b/model/message.go index 566545e..e622a54 100644 --- a/model/message.go +++ b/model/message.go @@ -186,10 +186,18 @@ func (t *Timeline) Insert(mi *Message) int { // check that we haven't seen this message before (this has no impact on p2p messages, but is essential for // group messages) - idx, exists := t.signatureCache[base64.StdEncoding.EncodeToString(mi.Signature)] - if exists { - t.Messages[idx].Acknowledged = true - return idx + // FIXME: The below code now checks if the message has a signature. If it doesn't then skip duplication check. + // We do this because p2p messages right now do not have a signature, and so many p2p messages are not stored + // with a signature. In the future in hybrid groups this check will go away as all timelines will use the same + // underlying protocol. + // This is currently safe to do because p2p does not rely on signatures and groups will verify the signature of + // messages prior to generating an event to include them in the timeline. + if len(mi.Signature) != 0 { + idx, exists := t.signatureCache[base64.StdEncoding.EncodeToString(mi.Signature)] + if exists { + t.Messages[idx].Acknowledged = true + return idx + } } // update the message store From b9eb1311d1af3ebabc0aad9cb5db5f1e9554c9bf Mon Sep 17 00:00:00 2001 From: Sarah Jamie Lewis Date: Tue, 2 Nov 2021 13:41:53 -0700 Subject: [PATCH 2/2] Sort Integration Timelines prior to checking --- testing/cwtch_peer_server_integration_test.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/testing/cwtch_peer_server_integration_test.go b/testing/cwtch_peer_server_integration_test.go index ff63524..c95eb8f 100644 --- a/testing/cwtch_peer_server_integration_test.go +++ b/testing/cwtch_peer_server_integration_test.go @@ -383,6 +383,7 @@ func TestCwtchPeerIntegration(t *testing.T) { t.Errorf("Alice's timeline does not have all messages") } else { // check message 0,1,2,3 + alicesGroup.Timeline.Sort() aliceGroupTimeline := alicesGroup.GetTimeline() if aliceGroupTimeline[0].Message != aliceLines[0] || aliceGroupTimeline[1].Message != bobLines[0] || aliceGroupTimeline[2].Message != aliceLines[1] || aliceGroupTimeline[3].Message != bobLines[1] { @@ -394,6 +395,7 @@ func TestCwtchPeerIntegration(t *testing.T) { t.Errorf("Bob's timeline does not have all messages") } else { // check message 0,1,2,3,4,5 + bobsGroup.Timeline.Sort() bobGroupTimeline := bobsGroup.GetTimeline() if bobGroupTimeline[0].Message != aliceLines[0] || bobGroupTimeline[1].Message != bobLines[0] || bobGroupTimeline[2].Message != aliceLines[1] || bobGroupTimeline[3].Message != bobLines[1] || @@ -406,6 +408,7 @@ func TestCwtchPeerIntegration(t *testing.T) { t.Errorf("Carol's timeline does not have all messages") } else { // check message 0,1,2,3,4,5 + carolsGroup.Timeline.Sort() carolGroupTimeline := carolsGroup.GetTimeline() if carolGroupTimeline[0].Message != aliceLines[0] || carolGroupTimeline[1].Message != bobLines[0] || carolGroupTimeline[2].Message != aliceLines[1] || carolGroupTimeline[3].Message != bobLines[1] ||