summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2025-06-08 00:31:14 +0200
committerCarl Hetherington <cth@carlh.net>2025-07-09 01:16:39 +0200
commit0cd2c51138a4e5ebc3fc6e7fb4c5435a79a9f69c (patch)
treed8f427e93f685afb542057f854fb4a9caa85c94e
parentafb42c9639d754a6e3520695c04c5b436c5b749b (diff)
Better handling / presentation of network errors during uploads.uploader-take2
-rw-r--r--src/lib/curl_uploader.cc5
-rw-r--r--src/lib/job.cc6
-rw-r--r--src/lib/scp_uploader.cc5
3 files changed, 13 insertions, 3 deletions
diff --git a/src/lib/curl_uploader.cc b/src/lib/curl_uploader.cc
index bdbdb098f..18d4f9166 100644
--- a/src/lib/curl_uploader.cc
+++ b/src/lib/curl_uploader.cc
@@ -26,6 +26,7 @@
#include "cross.h"
#include "compose.hpp"
#include "dcpomatic_assert.h"
+#include <fmt/format.h>
#include <iostream>
#include "i18n.h"
@@ -121,8 +122,8 @@ CurlUploader::upload_file(boost::filesystem::path from, boost::filesystem::path
auto const r = curl_easy_perform(_curl);
if (r != CURLE_OK) {
throw NetworkError(
- String::compose(_("Could not write to remote file %1"), to.generic_string()),
- string(curl_easy_strerror(r))
+ _("Could not write to remote file"),
+ fmt::format(_("File: {} error: {}"), to.generic_string(), string(curl_easy_strerror(r)))
);
}
diff --git a/src/lib/job.cc b/src/lib/job.cc
index 568a06d94..ff19c5aad 100644
--- a/src/lib/job.cc
+++ b/src/lib/job.cc
@@ -258,6 +258,12 @@ Job::run_wrapper ()
set_progress(1);
set_state(FINISHED_ERROR);
+ } catch (NetworkError& e) {
+
+ set_error(e.summary(), e.detail().get_value_or(""));
+ set_progress(1);
+ set_state(FINISHED_ERROR);
+
} catch (std::exception& e) {
set_error (
diff --git a/src/lib/scp_uploader.cc b/src/lib/scp_uploader.cc
index 2735f0155..a81ddbc69 100644
--- a/src/lib/scp_uploader.cc
+++ b/src/lib/scp_uploader.cc
@@ -135,7 +135,10 @@ LIBDCP_DISABLE_WARNINGS
int const r = ssh_scp_write(_scp, buffer.data(), t);
LIBDCP_ENABLE_WARNINGS
if (r != SSH_OK) {
- throw NetworkError(String::compose(_("Could not write to remote file (%1)"), ssh_get_error(_session)));
+ throw NetworkError(
+ _("Could not write to remote file"),
+ string(ssh_get_error(_session))
+ );
}
to_do -= t;
transferred += t;