PUT to proxied special remote working

Still needs some work.

The reason that the waitv is necessary is because without it,
runNet loops back around and reads the next protocol message. But it's
not finished reading the whole bytestring yet, and so it reads some part
of it.
This commit is contained in:
Joey Hess 2024-06-28 17:07:01 -04:00
parent 2e5af38f86
commit 711a5166e2
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
4 changed files with 92 additions and 18 deletions

View file

@ -149,7 +149,7 @@ spaces, since it's not the last token in the line. Use '%' to indicate
whitespace.)
The server may respond with ALREADY-HAVE if it already
had the conent of that key.
had the content of that key.
In protocol version 2, the server can optionally reply with
ALREADY-HAVE-PLUS. The subsequent list of UUIDs are additional

View file

@ -29,14 +29,26 @@ For June's work on [[design/passthrough_proxy]], remaining todos:
object files around when the client does not send SUCCESS. This would
use more disk, but without streaming, proxying a special remote already
needs some disk. And it could minimize to eg, the last 2 or so.
The design doc has some more thoughts about this.
* If GET from a proxied special remote sends an ERROR with a message
from the special remote, currently the user sees "protocol error".
* Implement PUT to proxied special remotes.
* convert Remote.storeKey to take the path of the object file to send.
It's too ugly that PUT to a proxied special remote currently has to
temporarily populate the proxy's annex object file. There are too many
ways that could lead to surprising behavior, like an interrupted PUT
leaving it populated, or simulantaneous PUTs.
* PUT to a proxied special remote, in the case where the proxy contains
the key, and the special remote is not accessible, sends back ERROR
rather than PUT-FROM or ALREADY-HAVE. Verify that the client processes
that ok and displays it to the user.
* Streaming download from proxied special remotes. See design.
* Check annex.diskreserve when proxying for special remotes.
# items deferred until later for [[design/passthrough_proxy]]
* Indirect uploads when proxying for special remote