From 0b8a17cab6d47c0abf1f604b6dbc6dc92553ed15 Mon Sep 17 00:00:00 2001 From: eldritch horrors Date: Fri, 5 Apr 2024 03:52:23 +0200 Subject: [PATCH] Revert "libstore: remove one Resource::good flag" This reverts commit 87249eb579bf57f4f09e9fca100588a4d6b90b4c. Change-Id: Ide4c6e00c4155216a17e46671ff47151d7bb85b4 --- src/libstore/legacy-ssh-store.cc | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/libstore/legacy-ssh-store.cc b/src/libstore/legacy-ssh-store.cc index e06d4e08d..2d8667a85 100644 --- a/src/libstore/legacy-ssh-store.cc +++ b/src/libstore/legacy-ssh-store.cc @@ -46,6 +46,7 @@ struct LegacySSHStore : public virtual LegacySSHStoreConfig, public virtual Stor FdSink to; FdSource from; ServeProto::Version remoteVersion; + bool good = true; /** * Coercion to `ServeProto::ReadConn`. This makes it easy to use the @@ -96,7 +97,8 @@ struct LegacySSHStore : public virtual LegacySSHStoreConfig, public virtual Stor , host(host) , connections(make_ref>( std::max(1, (int) maxConnections), - [this]() { return openConnection(); } + [this]() { return openConnection(); }, + [](const ref & r) { return r->good; } )) , master( host, @@ -194,7 +196,12 @@ struct LegacySSHStore : public virtual LegacySSHStoreConfig, public virtual Stor << info.ultimate << info.sigs << renderContentAddress(info.ca); - copyNAR(source, conn->to); + try { + copyNAR(source, conn->to); + } catch (...) { + conn->good = false; + throw; + } conn->to.flush(); } else { @@ -202,7 +209,12 @@ struct LegacySSHStore : public virtual LegacySSHStoreConfig, public virtual Stor conn->to << ServeProto::Command::ImportPaths << 1; - copyNAR(source, conn->to); + try { + copyNAR(source, conn->to); + } catch (...) { + conn->good = false; + throw; + } conn->to << exportMagic << printStorePath(info.path);