From 81e30fd1b8b3c9fd6cb18613c043cc4141279381 Mon Sep 17 00:00:00 2001 From: Christian Parpart Date: Fri, 8 Apr 2016 12:45:07 +0200 Subject: [PATCH] track a user as recurring only if he's not new --- main.go | 5 ++++- tracker.go | 7 +++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/main.go b/main.go index 518b1cc..e730059 100644 --- a/main.go +++ b/main.go @@ -40,7 +40,10 @@ func (service *Service) httpTrack(w http.ResponseWriter, r *http.Request) { } else { cookie.Expires = time.Now().Add(service.CookieTTL) http.SetCookie(w, cookie) - service.RecurringSessions.Touch(cookie.Value) + + if !service.NewSessions.Contains(cookie.Value) { + service.RecurringSessions.Touch(cookie.Value) + } } service.writeEmptyGif(w, r) diff --git a/tracker.go b/tracker.go index f8cb226..6667eae 100644 --- a/tracker.go +++ b/tracker.go @@ -64,6 +64,13 @@ func (tracker *Tracker) Debugf(msg string, args ...interface{}) { } } +func (tracker *Tracker) Contains(sessionID string) bool { + tracker.bucketMutex.Lock() + _, ok := tracker.buckets[sessionID] + tracker.bucketMutex.Unlock() + return ok +} + func (tracker *Tracker) Touch(sessionID string) { tracker.bucketMutex.Lock()