Don't say 'certificate downloaded' if it failed during the read part.
authorCarl Hetherington <cth@carlh.net>
Thu, 14 May 2020 18:14:52 +0000 (20:14 +0200)
committerCarl Hetherington <cth@carlh.net>
Thu, 14 May 2020 18:45:24 +0000 (20:45 +0200)
Backported from 8c7ad603cf0a534abe1a920b70b0daa095257d3a in v2.15.x

src/lib/internet.cc
src/lib/internet.h
src/wx/download_certificate_panel.cc
src/wx/download_certificate_panel.h

index e0af49b6698e64c75148ec5ecfddee14e1c75969..8721c1b73792254b705452e532172aa3d9f98a91 100644 (file)
@@ -79,24 +79,25 @@ get_from_url (string url, bool pasv, bool skip_pasv_ip, ScopedTemporary& temp)
        return optional<string>();
 }
 
        return optional<string>();
 }
 
+
 optional<string>
 optional<string>
-get_from_url (string url, bool pasv, bool skip_pasv_ip, function<void (boost::filesystem::path)> load)
+get_from_url (string url, bool pasv, bool skip_pasv_ip, function<optional<string> (boost::filesystem::path)> load)
 {
        ScopedTemporary temp;
        optional<string> e = get_from_url (url, pasv, skip_pasv_ip, temp);
        if (e) {
                return e;
        }
 {
        ScopedTemporary temp;
        optional<string> e = get_from_url (url, pasv, skip_pasv_ip, temp);
        if (e) {
                return e;
        }
-       load (temp.file());
-       return optional<string>();
+       return load (temp.file());
 }
 
 }
 
+
 /** @param url URL of ZIP file.
  *  @param file Filename within ZIP file.
  *  @param load Function passed a (temporary) filesystem path of the unpacked file.
  */
 optional<string>
 /** @param url URL of ZIP file.
  *  @param file Filename within ZIP file.
  *  @param load Function passed a (temporary) filesystem path of the unpacked file.
  */
 optional<string>
-get_from_zip_url (string url, string file, bool pasv, bool skip_pasv_ip, function<void (boost::filesystem::path)> load)
+get_from_zip_url (string url, string file, bool pasv, bool skip_pasv_ip, function<optional<string> (boost::filesystem::path)> load)
 {
        /* Download the ZIP file to temp_zip */
        ScopedTemporary temp_zip;
 {
        /* Download the ZIP file to temp_zip */
        ScopedTemporary temp_zip;
@@ -153,6 +154,5 @@ get_from_zip_url (string url, string file, bool pasv, bool skip_pasv_ip, functio
        zip_close (zip);
        temp_cert.close ();
 
        zip_close (zip);
        temp_cert.close ();
 
-       load (temp_cert.file ());
-       return optional<string> ();
+       return load (temp_cert.file());
 }
 }
index 125533b5d7e39aa21741c2b370d3c36fadd66db6..da0bfc005f89d899ad0387546036adb81cd53620 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
-    Copyright (C) 2014-2019 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2014-2020 Carl Hetherington <cth@carlh.net>
 
     This file is part of DCP-o-matic.
 
 
     This file is part of DCP-o-matic.
 
@@ -25,5 +25,5 @@
 class ScopedTemporary;
 
 boost::optional<std::string> get_from_url (std::string url, bool pasv, bool skip_pasv_ip, ScopedTemporary& temp);
 class ScopedTemporary;
 
 boost::optional<std::string> get_from_url (std::string url, bool pasv, bool skip_pasv_ip, ScopedTemporary& temp);
-boost::optional<std::string> get_from_url (std::string url, bool pasv, bool skip_pasv_ip, boost::function<void (boost::filesystem::path)> load);
-boost::optional<std::string> get_from_zip_url (std::string url, std::string file, bool pasv, bool skip_pasv_ip, boost::function<void (boost::filesystem::path)> load);
+boost::optional<std::string> get_from_url (std::string url, bool pasv, bool skip_pasv_ip, boost::function<boost::optional<std::string> (boost::filesystem::path)> load);
+boost::optional<std::string> get_from_zip_url (std::string url, std::string file, bool pasv, bool skip_pasv_ip, boost::function<boost::optional<std::string> (boost::filesystem::path)> load);
index 2f3b435efaba5a4f66cc2a72f432ae1a20ad8ea3..461c68966cba83b94d3afc27838f073e55fb78ba 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
-    Copyright (C) 2014-2018 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2014-2020 Carl Hetherington <cth@carlh.net>
 
     This file is part of DCP-o-matic.
 
 
     This file is part of DCP-o-matic.
 
 #include "download_certificate_panel.h"
 #include "download_certificate_dialog.h"
 #include "lib/signal_manager.h"
 #include "download_certificate_panel.h"
 #include "download_certificate_dialog.h"
 #include "lib/signal_manager.h"
+#include "lib/compose.hpp"
 #include <dcp/util.h>
 #include <dcp/exceptions.h>
 #include <boost/bind.hpp>
 
 #include <dcp/util.h>
 #include <dcp/exceptions.h>
 #include <boost/bind.hpp>
 
+using std::string;
 using boost::function;
 using boost::optional;
 
 using boost::function;
 using boost::optional;
 
@@ -51,14 +53,15 @@ DownloadCertificatePanel::DownloadCertificatePanel (DownloadCertificateDialog* d
        _overall_sizer->SetSizeHints (this);
 }
 
        _overall_sizer->SetSizeHints (this);
 }
 
-void
+optional<string>
 DownloadCertificatePanel::load (boost::filesystem::path file)
 {
        try {
                _certificate = dcp::Certificate (dcp::file_to_string (file));
        } catch (dcp::MiscError& e) {
 DownloadCertificatePanel::load (boost::filesystem::path file)
 {
        try {
                _certificate = dcp::Certificate (dcp::file_to_string (file));
        } catch (dcp::MiscError& e) {
-               error_dialog (this, _("Could not read certificate file."), std_to_wx(e.what()));
+               return String::compose(wx_to_std(_("Could not read certificate file (%1)")), e.what());
        }
        }
+       return optional<string>();
 }
 
 optional<dcp::Certificate>
 }
 
 optional<dcp::Certificate>
index 55594c74c66b6f1df48a43d927608594f54e6c93..dee76c43503792a0fec3b9026b3b480c689189ba 100644 (file)
@@ -37,7 +37,7 @@ public:
        virtual bool ready_to_download () const;
 
        void download ();
        virtual bool ready_to_download () const;
 
        void download ();
-       void load (boost::filesystem::path);
+       boost::optional<std::string> load (boost::filesystem::path);
        boost::optional<dcp::Certificate> certificate () const;
 
 protected:
        boost::optional<dcp::Certificate> certificate () const;
 
 protected: