diff --git a/api/client.go b/api/client.go index a8e641a491dd0fd1438f920ecc08d5bf87c85650..7145b1f802768a86e376aa9090175754322265b8 100644 --- a/api/client.go +++ b/api/client.go @@ -9,6 +9,7 @@ package api import ( "encoding/json" + "gitlab.com/xx_network/primitives/netTime" "math" "time" @@ -94,10 +95,10 @@ func NewClient(ndfJSON, storageDir string, password []byte, } cmixGrp, e2eGrp := decodeGroups(def) - start := time.Now() + start := netTime.Now() protoUser := createNewUser(rngStreamGen, cmixGrp, e2eGrp) jww.DEBUG.Printf("PortableUserInfo generation took: %s", - time.Now().Sub(start)) + netTime.Now().Sub(start)) _, err = checkVersionAndSetupStorage(def, storageDir, password, protoUser, cmixGrp, e2eGrp, rngStreamGen, diff --git a/auth/store/store_test.go b/auth/store/store_test.go index 882ac6ac1c31aaf8c40954a56a6634f460d8eb9b..e6b14e7e08a40724668ce252054cc4d7591c4e85 100644 --- a/auth/store/store_test.go +++ b/auth/store/store_test.go @@ -25,6 +25,7 @@ import ( "gitlab.com/xx_network/crypto/csprng" "gitlab.com/xx_network/crypto/large" "gitlab.com/xx_network/primitives/id" + "gitlab.com/xx_network/primitives/netTime" "io" "math/rand" "reflect" @@ -923,7 +924,7 @@ func makeTestRound(t *testing.T) rounds.Round { State: 2, BatchSize: 5, Topology: [][]byte{[]byte("one"), []byte("two")}, - Timestamps: []uint64{uint64(time.Now().UnixNano()), uint64(time.Now().UnixNano())}, + Timestamps: []uint64{uint64(netTime.Now().UnixNano()), uint64(netTime.Now().UnixNano())}, Errors: nil, ClientErrors: nil, ResourceQueueTimeoutMillis: 0, diff --git a/auth/utils_test.go b/auth/utils_test.go index 2a6c16ecca08536668bbebcc35bc4c63bde9aabe..da9f6d7c00c9f8a79dd87aa33b7a32987e8825ac 100644 --- a/auth/utils_test.go +++ b/auth/utils_test.go @@ -9,9 +9,9 @@ import ( "gitlab.com/xx_network/comms/connect" "gitlab.com/xx_network/crypto/large" "gitlab.com/xx_network/primitives/id" + "gitlab.com/xx_network/primitives/netTime" "math/rand" "testing" - "time" ) type mockSentRequestHandler struct{} @@ -75,7 +75,7 @@ func makeTestRound(t *testing.T) rounds.Round { State: 2, BatchSize: 5, Topology: [][]byte{[]byte("test"), []byte("test")}, - Timestamps: []uint64{uint64(time.Now().UnixNano()), uint64(time.Now().UnixNano())}, + Timestamps: []uint64{uint64(netTime.Now().UnixNano()), uint64(netTime.Now().UnixNano())}, Errors: nil, ClientErrors: nil, ResourceQueueTimeoutMillis: 0, diff --git a/cmix/identity/tracker.go b/cmix/identity/tracker.go index 1022940eec62f13f2b2b2358a54029856fe4bee8..51f324b67f88c6a01512391817cb3554b04117d8 100644 --- a/cmix/identity/tracker.go +++ b/cmix/identity/tracker.go @@ -189,13 +189,18 @@ func (t *manager) track(stop *stoppable.Single) { // Sleep until the last ID has expired select { - case <-time.NewTimer(nextUpdate.Sub(nextUpdate)).C: + case <-time.After(nextUpdate.Sub(nextUpdate)): case newIdentity := <-t.newIdentity: + jww.DEBUG.Printf("Receiving new identity %s :%+v", + newIdentity.Source, newIdentity) + // If the identity is old, then update its properties isOld := false for i := range t.tracked { inQuestion := t.tracked[i] if inQuestion.Source.Cmp(newIdentity.Source) { + jww.DEBUG.Printf( + "Updating old identity %s", newIdentity.Source) inQuestion.Persistent = newIdentity.Persistent inQuestion.ValidUntil = newIdentity.ValidUntil isOld = true @@ -203,6 +208,7 @@ func (t *manager) track(stop *stoppable.Single) { } } if !isOld { + jww.DEBUG.Printf("Tracking new identity %s", newIdentity.Source) // Otherwise, add it to the list and run t.tracked = append(t.tracked, newIdentity) } diff --git a/cmix/identity/tracker_test.go b/cmix/identity/tracker_test.go index ef7241c6422d163abc869121b1756aee2b8fff0a..f8b28740d7e41a00bf66eb1b55e3a459a986ff2d 100644 --- a/cmix/identity/tracker_test.go +++ b/cmix/identity/tracker_test.go @@ -36,7 +36,7 @@ func TestManager_processIdentities_expired(t *testing.T) { // Add some expired test IDs for i := uint64(0); i < 10; i++ { testId := id.NewIdFromUInt(i, id.User, t) - validUntil := time.Now() + validUntil := netTime.Now() m.tracked = append(m.tracked, TrackedID{ NextGeneration: netTime.Now().Add(-time.Second), LastGeneration: time.Time{}, @@ -75,7 +75,7 @@ func TestManager_processIdentities(t *testing.T) { // Add some expired test IDs testId := id.NewIdFromUInt(0, id.User, t) - validUntil := time.Now().Add(time.Minute) + validUntil := netTime.Now().Add(time.Minute) m.tracked = append(m.tracked, TrackedID{ NextGeneration: netTime.Now(), LastGeneration: time.Time{}, diff --git a/cmix/polltracker_test.go b/cmix/polltracker_test.go index 9b0812d04784a4c1943f1f8b2c2786284782d312..8fb6d96860d70c94f48f51843a03df44f84694be 100644 --- a/cmix/polltracker_test.go +++ b/cmix/polltracker_test.go @@ -3,6 +3,7 @@ package cmix import ( xxid "gitlab.com/xx_network/primitives/id" "gitlab.com/xx_network/primitives/id/ephemeral" + "gitlab.com/xx_network/primitives/netTime" "strings" "testing" "time" @@ -14,11 +15,11 @@ func TestPollTracker(t *testing.T) { // Init ID and first EID id := xxid.NewIdFromString("zezima", xxid.User, t) - eid, _, _, err := ephemeral.GetId(id, 16, time.Now().UnixNano()) + eid, _, _, err := ephemeral.GetId(id, 16, netTime.Now().UnixNano()) if err != nil { t.Errorf("Failed to create eid for ID %s", id.String()) } - eid2, _, _, err := ephemeral.GetId(id, 16, time.Now().Add(time.Hour*24).UnixNano()) + eid2, _, _, err := ephemeral.GetId(id, 16, netTime.Now().Add(time.Hour*24).UnixNano()) if err != nil { t.Errorf("Failed to create second eid for ID %s", id.String()) } diff --git a/cmix/utils_test.go b/cmix/utils_test.go index 2d45401c6c7c010b0a61c588f48fc05d277e63f2..6fffb13db3f47dee64d71e89f6e254050d0318c0 100644 --- a/cmix/utils_test.go +++ b/cmix/utils_test.go @@ -227,7 +227,7 @@ func newTestClient(t *testing.T) (*client, error) { } pubKey := pk.GetPublic() - now := time.Now() + now := netTime.Now() timestamps := []uint64{ uint64(now.Add(-30 * time.Second).UnixNano()), //PENDING uint64(now.Add(-25 * time.Second).UnixNano()), //PRECOMPUTING diff --git a/e2e/manager.go b/e2e/manager.go index 885748a08e35a57bbabb610abf874df5180b40cc..de6f09d7812f87447ffea943d9982da08dd767d8 100644 --- a/e2e/manager.go +++ b/e2e/manager.go @@ -2,6 +2,7 @@ package e2e import ( "encoding/json" + "gitlab.com/xx_network/primitives/netTime" "strings" "time" @@ -55,7 +56,7 @@ func initE2E(kv *versioned.KV, myID *id.ID, privKey *cyclic.Int, } err = kv.Set(e2eRekeyParamsKey, e2eRekeyParamsVer, &versioned.Object{ Version: e2eRekeyParamsVer, - Timestamp: time.Now(), + Timestamp: netTime.Now(), Data: rekeyParamsData, }) if err != nil { @@ -101,7 +102,7 @@ func LoadLegacy(kv *versioned.KV, net cmix.Client, myID *id.ID, // Store the rekey params to disk/memory err = kv.Set(e2eRekeyParamsKey, e2eRekeyParamsVer, &versioned.Object{ Version: e2eRekeyParamsVer, - Timestamp: time.Now(), + Timestamp: netTime.Now(), Data: rekeyParamsData, }) diff --git a/storage/utility/bucket.go b/storage/utility/bucket.go index 5548cdfe52321d58ca181130dbca4010d5aa4b16..46b3da9a9d7733b0ce2abb5812a451ea9ae8e419 100644 --- a/storage/utility/bucket.go +++ b/storage/utility/bucket.go @@ -42,7 +42,7 @@ func NewStoredBucket(capacity, leaked uint32, leakDuration time.Duration, kv: kv.Prefix(bucketStorePrefix), } - bs.save(0, time.Now().UnixNano()) + bs.save(0, netTime.Now().UnixNano()) return rateLimiting.CreateBucket(capacity, leaked, leakDuration, bs.save) } diff --git a/storage/utility/messageBuffer.go b/storage/utility/messageBuffer.go index 82c8b898e14c9e9b225a5d74141ec6e61925c8bd..8f513bdb948a61d11b7486eea80848a97a9876b0 100644 --- a/storage/utility/messageBuffer.go +++ b/storage/utility/messageBuffer.go @@ -203,11 +203,19 @@ func (mb *MessageBuffer) Add(m interface{}) interface{} { defer mb.mux.Unlock() // Ensure message does not already exist in buffer - if face1, exists1 := mb.messages[h]; exists1 { - return face1 + if _, exists1 := mb.messages[h]; exists1 { + msg, err := mb.handler.LoadMessage(mb.kv, MakeStoredMessageKey(mb.key, h)) + if err != nil { + jww.FATAL.Panicf("Error loading message %s: %v", h, err) + } + return msg } - if face2, exists2 := mb.processingMessages[h]; exists2 { - return face2 + if _, exists2 := mb.processingMessages[h]; exists2 { + msg, err := mb.handler.LoadMessage(mb.kv, MakeStoredMessageKey(mb.key, h)) + if err != nil { + jww.FATAL.Panicf("Error loading processing message %s: %v", h, err) + } + return msg } // Save message as versioned object diff --git a/xxmutils/restoreContacts.go b/xxmutils/restoreContacts.go index b64947418cb401ea797c99cc8c5935a60335bfb9..6b8afad7073c5d9ff7b4ad56e19515bdd596440c 100644 --- a/xxmutils/restoreContacts.go +++ b/xxmutils/restoreContacts.go @@ -11,6 +11,7 @@ import ( "encoding/json" "errors" "fmt" + "gitlab.com/xx_network/primitives/netTime" "math" "strings" "sync" @@ -287,7 +288,7 @@ func (s stateStore) set(user *contact.Contact, state restoreState) error { data = append(data, user.Marshal()...) val := &versioned.Object{ Version: 0, - Timestamp: time.Now(), + Timestamp: netTime.Now(), Data: data, } return s.apiStore.Set(key, val)