diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 12:41:41 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 12:41:41 +0000 |
commit | 10ee2acdd26a7f1298c6f6d6b7af9b469fe29b87 (patch) | |
tree | bdffd5d80c26cf4a7a518281a204be1ace85b4c1 /vendor/gix-protocol/src/util.rs | |
parent | Releasing progress-linux version 1.70.0+dfsg1-9~progress7.99u1. (diff) | |
download | rustc-10ee2acdd26a7f1298c6f6d6b7af9b469fe29b87.tar.xz rustc-10ee2acdd26a7f1298c6f6d6b7af9b469fe29b87.zip |
Merging upstream version 1.70.0+dfsg2.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/gix-protocol/src/util.rs')
-rw-r--r-- | vendor/gix-protocol/src/util.rs | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/vendor/gix-protocol/src/util.rs b/vendor/gix-protocol/src/util.rs new file mode 100644 index 000000000..a790aebd5 --- /dev/null +++ b/vendor/gix-protocol/src/util.rs @@ -0,0 +1,27 @@ +/// The name of the `git` client in a format suitable for presentation to a `git` server, using `name` as user-defined portion of the value. +pub fn agent(name: impl Into<String>) -> String { + let mut name = name.into(); + if !name.starts_with("git/") { + name.insert_str(0, "git/"); + } + name +} + +/// Send a message to indicate the remote side that there is nothing more to expect from us, indicating a graceful shutdown. +#[cfg(any(feature = "blocking-client", feature = "async-client"))] +#[maybe_async::maybe_async] +pub async fn indicate_end_of_interaction( + mut transport: impl gix_transport::client::Transport, +) -> Result<(), gix_transport::client::Error> { + // An empty request marks the (early) end of the interaction. Only relevant in stateful transports though. + if transport.connection_persists_across_multiple_requests() { + transport + .request( + gix_transport::client::WriteMode::Binary, + gix_transport::client::MessageKind::Flush, + )? + .into_read() + .await?; + } + Ok(()) +} |