diff options
Diffstat (limited to '')
| -rw-r--r-- | lib/Server/Ingest.hs | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/lib/Server/Ingest.hs b/lib/Server/Ingest.hs index c598ac2..ec99e60 100644 --- a/lib/Server/Ingest.hs +++ b/lib/Server/Ingest.hs @@ -75,7 +75,7 @@ handleTrackerRegister dbpool RegisterJson{..} = do today <- liftIO getCurrentTime <&> utctDay expires <- liftIO $ getCurrentTime <&> addUTCTime validityPeriod runSql dbpool $ do - TrackerKey tracker <- insert (Tracker "dummy" {-expires-} False registerAgent Nothing) + TrackerKey tracker <- insert (Tracker "dummy" {-expires-} False registerAgent Nothing Nothing) pure (coerce tracker) where validityPeriod :: NominalDiffTime @@ -126,9 +126,10 @@ handleOwntracksMessage -> ServerConfig -> Maybe Text -> Maybe Text + -> Maybe Int -> Message -> LoggingT (ReaderT LoggingConfig Handler) [Command] -handleOwntracksMessage dbpool subscribers cfg maybeUser device msg = do +handleOwntracksMessage dbpool subscribers cfg maybeUser device maybeVersion msg = do user <- case maybeUser of Just user -> pure user Nothing -> throwError err401 @@ -145,6 +146,17 @@ handleOwntracksMessage dbpool subscribers cfg maybeUser device msg = do Just tracker -> pure tracker Nothing -> throw err401 + whenJust maybeVersion \version -> do + whenJust trackerConfigVersion \tversion -> do + when (tversion > version) $ logWarnN $ "Tracker "+|trackerName|+" sent message tagged with older config "+|version|+" after we've seen it using config "+|tversion|+"." + runSql dbpool $ do + when (tversion < version) $ E.update \t -> do + set t [TrackerConfigVersion E.=. val (Just version)] + where_ (t ^. TrackerId E.==. val trackerId) + E.update \c -> do + set c [TrackerConfigSeen E.=. val True] + where_ (c ^. TrackerConfigTracker E.==. val trackerId) + case msg of MsgStatus status -> do now <- liftIO getCurrentTime |
