diff --git a/network/ephemeral/tracker.go b/network/ephemeral/tracker.go index 82b25ec0ad6fd15b5d406773933a1cd4c3e20e0e..dc094afb20a7a0d8f4ac4b8331fd4301c00a456e 100644 --- a/network/ephemeral/tracker.go +++ b/network/ephemeral/tracker.go @@ -141,15 +141,16 @@ func generateIdentities(protoIds []ephemeral.ProtoIdentity, ourId *id.ID, // Add identities for every ephemeral ID for i, eid := range protoIds { // Expand the grace period for both start and end - eid.End.Add(validityGracePeriod) - eid.Start.Add(-validityGracePeriod) + // This does not actually modify anything.... time is not a pointer and even if it were this returns the new value??? + // eid.End.Add(validityGracePeriod) + // eid.Start.Add(-validityGracePeriod) identities[i] = reception.Identity{ EphId: eid.Id, Source: ourId, AddressSize: addressSize, End: eid.End, - StartValid: eid.Start, - EndValid: eid.End, + StartValid: eid.Start.Add(-validityGracePeriod), + EndValid: eid.End.Add(validityGracePeriod), // What is this vs end? should it be modified?? Ephemeral: false, } @@ -211,6 +212,6 @@ func calculateTickerTime(baseIDs []ephemeral.ProtoIdentity, now time.Time) time. // Factor out the grace period previously expanded upon // Calculate and return that duration - gracePeriod := lastIdentity.End.Add(-2 * validityGracePeriod) + gracePeriod := lastIdentity.End.Add(-1 * validityGracePeriod) return gracePeriod.Sub(now) } diff --git a/network/ephemeral/tracker_test.go b/network/ephemeral/tracker_test.go index 3307446bc17f25cbf8d8bc119e01a2889b1c2ae2..7e5cd8887eb719b4713363c6c19bbac64e545aea 100644 --- a/network/ephemeral/tracker_test.go +++ b/network/ephemeral/tracker_test.go @@ -17,6 +17,7 @@ import ( "gitlab.com/xx_network/comms/signature" "gitlab.com/xx_network/crypto/signature/rsa" "gitlab.com/xx_network/primitives/id" + "gitlab.com/xx_network/primitives/id/ephemeral" "gitlab.com/xx_network/primitives/netTime" "gitlab.com/xx_network/primitives/utils" "testing" @@ -122,3 +123,18 @@ func setupInstance(instance interfaces.NetworkManager) error { return nil } + +func TestGenerateIdentities(t *testing.T) { + eid, s, e, err := ephemeral.GetId(id.NewIdFromString("zezima", id.Node, t), 16, time.Now().UnixNano()) + if err != nil { + t.Errorf("Failed to get eid: %+v", err) + } + protoIds := []ephemeral.ProtoIdentity{{eid, s, e}} + generated := generateIdentities(protoIds, id.NewIdFromString("escaline", id.Node, t), 16) + if generated[0].End != protoIds[0].End.Add(5*time.Minute) { + t.Errorf("End was not modified. Orig %+v, Generated %+v", protoIds[0].End, generated[0].End) + } + if generated[0].StartValid != protoIds[0].Start.Add(-5*time.Minute) { + t.Errorf("End was not modified. Orig %+v, Generated %+v", protoIds[0].End, generated[0].End) + } +}