finish P2P protocol proxying

CONNECT is not supported by git-annex-shell p2pstdio, but for proxying
to tor-annex remotes, it will be supported, and will make a git pull/push
to a proxied remote work the same with that as it does over ssh,
eg it accesses the proxy's git repo not the proxied remote's git repo.

The p2p protocol docs say that NOTIFYCHANGES is not always supported,
and it looked annoying to implement it for this, and it also seems
pretty useless, so make it be a protocol error. git-annex remotedaemon
will already be getting change notifications from the proxy's git repo,
so there's no need to get additional redundant change notifications for
proxied remotes that would be for changes to the same git repo.
This commit is contained in:
Joey Hess 2024-06-12 10:40:51 -04:00
parent f98605bce7
commit 96853cd833
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
3 changed files with 8 additions and 5 deletions

View file

@ -119,8 +119,11 @@ proxy proxydone servermode clientside remoteside othermessage protoerrhandler =
-- not the remote.
CONNECT service ->
servermodechecker (checkCONNECTServerMode service) $
giveup "TODO CONNECT"
NOTIFYCHANGE -> giveup "TODO NOTIFYCHANGE"
-- P2P protocol does not continue after
-- relaying from git.
protoerrhandler (\() -> proxydone) $
client $ net $ relayService service
NOTIFYCHANGE -> protoerr
-- Messages that the client should only send after one of
-- the messages above.
SUCCESS -> protoerr

View file

@ -192,6 +192,8 @@ its exit code.
CONNECTDONE ExitCode
After that, the server closes the connection.
## Change notification
The client can request to be notified when a ref in

View file

@ -36,9 +36,7 @@ For June's work on [[design/passthrough_proxy]], implementation plan:
2. Remote instantiation for proxies. (done)
3. Implement git-annex-shell proxying for CONNECT and NOTIFYCHANGES.
(For completeness, they will only be used when using tor-annex
to access a proxy.)
3. Implement git-annex-shell proxying to git remotes. (done)
3. Proxy should update location tracking information for proxied remotes,
so it is available to other users who sync with it.