wormhole pairing appid flag day 2021-12-31

Wormhole pairing will start to provide an appid to wormhole on 2021-12-31.
An appid can't be provided now because Debian stable is going to ship a
older version of git-annex that does not provide an appid. Assumption is
that by 2021-12-31, this version of git-annex will be shipped in a Debian
stable release. If that turns out to not be the case, this change will need
to be cherry-picked into the git-annex in Debian stable, or its wormhole
pairing will break.

This commit was sponsored by Thomas Hochstein on Patreon.
This commit is contained in:
Joey Hess 2017-02-03 15:06:17 -04:00
parent 06f307ad13
commit 3fe9d99f24
No known key found for this signature in database
GPG key ID: C910D9222512E3C7
4 changed files with 39 additions and 3 deletions

View file

@ -20,6 +20,13 @@ git-annex (6.20170102) UNRELEASED; urgency=medium
their contents in memory.
* unused: Improved memory use significantly when there are a lot
of differences between branches.
* Wormhole pairing will start to provide an appid to wormhole on
2021-12-31. An appid can't be provided now because Debian stable is going
to ship a older version of git-annex that does not provide an appid.
Assumption is that by 2021-12-31, this version of git-annex will be
shipped in a Debian stable release. If that turns out to not be the
case, this change will need to be cherry-picked into the git-annex in
Debian stable, or its wormhole pairing will break.
-- Joey Hess <id@joeyh.name> Fri, 06 Jan 2017 15:22:06 -0400

View file

@ -26,6 +26,7 @@ import qualified Utility.MagicWormhole as Wormhole
import Control.Concurrent.Async
import qualified Data.Text as T
import Data.Time.Clock.POSIX
cmd :: Command
cmd = command "p2p" SectionSetup
@ -224,10 +225,32 @@ wormholePairing remotename ouraddrs ui = do
observer <- liftIO Wormhole.mkCodeObserver
producer <- liftIO Wormhole.mkCodeProducer
void $ liftIO $ async $ ui observer producer
-- Provide an appid to magic wormhole, to avoid using
-- the same channels that other wormhole users use.
--
-- Since a version of git-annex that did not provide an
-- appid is shipping in Debian 9, and having one side
-- provide an appid while the other does not will make
-- wormhole fail, this is deferred until 2021-12-31.
-- After that point, all git-annex's should have been
-- upgraded to include this code, and they will start
-- providing an appid.
--
-- This assumes reasonably good client clocks. If the clock
-- is completely wrong, it won't use the appid at that
-- point, and pairing will fail. On 2021-12-31, minor clock
-- skew may also cause transient problems.
--
-- After 2021-12-31, this can be changed to simply
-- always provide the appid.
now <- liftIO getPOSIXTime
let wormholeparams = if now < 1640950000
then []
else Wormhole.appId "git-annex.branchable.com/p2p-setup"
(sendres, recvres) <- liftIO $
Wormhole.sendFile sendf observer []
Wormhole.sendFile sendf observer wormholeparams
`concurrently`
Wormhole.receiveFile recvf producer []
Wormhole.receiveFile recvf producer wormholeparams
liftIO $ nukeFile sendf
if sendres /= True
then return SendFailed

View file

@ -18,6 +18,7 @@ module Utility.MagicWormhole (
waitCode,
sendCode,
WormHoleParams,
appId,
sendFile,
receiveFile,
isInstalled,
@ -87,6 +88,11 @@ sendCode (CodeProducer p) = putMVar p
type WormHoleParams = [CommandParam]
-- | An appid should be provided when using wormhole in an app, to avoid
-- using the same channel space as ad-hoc wormhole users.
appId :: String -> WormHoleParams
appId s = [Param "--appid", Param s]
-- | Sends a file. Once the send is underway, and the Code has been
-- generated, it will be sent to the CodeObserver. (This may not happen,
-- eg if there's a network problem).

View file

@ -21,4 +21,4 @@ I haven't run git-annex's onion setup feature directly, but I'm reading through
It looks pretty amazing! Looking forward to using it in a Dropbox-like synchronization context soon.
> I've gone with the 2021-12-31 flag day approach. [[done]] --[[Joey]]