proxy local timestamps in single proxy case as well as cluster case
This is less efficient, but it guarantees that the timestamps that the client is sending are local timestamps, which turns out to be necessary for the HTTP PTP protocol server.
This commit is contained in:
parent
518248f009
commit
81e11efda1
1 changed files with 3 additions and 13 deletions
16
P2P/Proxy.hs
16
P2P/Proxy.hs
|
@ -349,18 +349,8 @@ proxy proxydone proxymethods proxystate servermode (ClientSide clientrunst clien
|
|||
_ <- client $ net $ sendMessage (ERROR "protocol error X")
|
||||
giveup "protocol error M"
|
||||
|
||||
-- When there is a single remote, reply with its timestamp,
|
||||
-- to avoid needing timestamp translation.
|
||||
handleGETTIMESTAMP (remoteside:[]) = do
|
||||
liftIO $ atomically $ do
|
||||
writeTVar (proxyRemoteLatestTimestamps proxystate)
|
||||
mempty
|
||||
writeTVar (proxyRemoteLatestLocalTimestamp proxystate)
|
||||
Nothing
|
||||
proxyresponse remoteside GETTIMESTAMP
|
||||
(const proxynextclientmessage)
|
||||
-- When there are multiple remotes, reply with our local timestamp,
|
||||
-- and do timestamp translation when sending REMOVE-FROM.
|
||||
-- Reply with our local timestamp, and do timestamp translation
|
||||
-- when sending REMOVE-BEFORE.
|
||||
handleGETTIMESTAMP remotesides = do
|
||||
-- Order of getting timestamps matters.
|
||||
-- Getting the local time after the time of the remotes
|
||||
|
@ -385,11 +375,11 @@ proxy proxydone proxymethods proxystate servermode (ClientSide clientrunst clien
|
|||
Just (remoteSideId r, ts)
|
||||
_ -> Nothing
|
||||
|
||||
proxyTimestamp ts _ _ Nothing = ts -- not proxying timestamps
|
||||
proxyTimestamp ts r tsm (Just correspondinglocaltime) =
|
||||
case M.lookup (remoteSideId r) tsm of
|
||||
Just oldts -> oldts + (ts - correspondinglocaltime)
|
||||
Nothing -> ts -- not reached
|
||||
proxyTimestamp ts _ _ Nothing = ts -- not proxying timestamps
|
||||
|
||||
handleREMOVE [] _ _ =
|
||||
-- When no places are provided to remove from,
|
||||
|
|
Loading…
Reference in a new issue