osbase/net/sshtakeover: fix upload cancelation

This updates sftp to the latest version, which has various improvements.

The previous method of canceling uploads doesn't work anymore, because
Close tries to take a lock already held by ReadFromWithConcurrency.
Even with the previous version of sftp, this wasn't a correct way to
cancel an upload, because it just sent a message to the server to close
the handle, while continuing the upload in the other goroutine.

There is a work in progress v2 of sftp where Close actually can be used
to cancel an upload: https://github.com/pkg/sftp/issues/603

For now, I think the best way to cancel an upload is to make the reader
return an error.

Change-Id: Id70ea7d35526a2a98295168de26469e28fd127dd
Reviewed-on: https://review.monogon.dev/c/monogon/+/4048
Tested-by: Jenkins CI
Reviewed-by: Tim Windelschmidt <tim@monogon.tech>
3 files changed
tree: c8002db983f28a4f0441a568bfdc4b69a8fb6f13
  1. .github/
  2. .vscode/
  3. build/
  4. cloud/
  5. go/
  6. intellij/
  7. metropolis/
  8. osbase/
  9. third_party/
  10. tools/
  11. version/
  12. .bazelignore
  13. .bazelproject
  14. .bazelrc
  15. .bazelrc.ci
  16. .bazelrc.sandboxroot
  17. .bazelversion
  18. .git-ignore-revs
  19. .gitignore
  20. BUILD.bazel
  21. CODING_STANDARDS.md
  22. go.mod
  23. go.sum
  24. LICENSE
  25. MODULE.bazel
  26. MODULE.bazel.lock
  27. README.md
  28. SETUP.md
  29. shell.nix
  30. WORKSPACE
README.md

Monogon Monorepo

This is the main repository containing the source code for the Monogon Platform.

This is pre-release software - take a look, and check back later! In the meantime, join us on Matrix (#monogon-os-community:matrix.org) or Discord.

Environment

Our build environment is self-contained and requires only minimal host dependencies:

  • A Linux machine or VM.
  • Bazelisk >= v1.15.0 (or a working Nix environment).
  • A reasonably recent kernel with user namespaces enabled.
  • Working KVM with access to /dev/kvm (if you want to run tests).

Our docs assume that Bazelisk is available as bazel on your PATH.

Refer to SETUP.md for detailed instructions.

Monogon OS

The source code lives in //metropolis (Metropolis is the codename of Monogon OS).

See the //metropolis/README.md for a developer quick start guide, or see the Monogon OS Handbook for user documentation.