diff --git a/mythtv/libs/libmythbase/mythsingledownload.cpp b/mythtv/libs/libmythbase/mythsingledownload.cpp index c983e6e76fc..bc8107f3441 100644 --- a/mythtv/libs/libmythbase/mythsingledownload.cpp +++ b/mythtv/libs/libmythbase/mythsingledownload.cpp @@ -12,7 +12,7 @@ #define LOC QString("MythSingleDownload: ") bool MythSingleDownload::DownloadURL(const QUrl &url, QByteArray *buffer, - uint timeout, uint redirs, qint64 maxsize) + uint timeout, uint redirs, qint64 maxsize, QString *final_url) { m_lock.lock(); @@ -73,7 +73,7 @@ bool MythSingleDownload::DownloadURL(const QUrl &url, QByteArray *buffer, LOG(VB_GENERAL, LOG_INFO, QString("%1 -> %2").arg(url.toString()).arg(redir)); m_replylock.unlock(); m_lock.unlock(); - return DownloadURL(redir, buffer, timeout, redirs + 1); + return DownloadURL(redir, buffer, timeout, redirs + 1, maxsize, final_url); } LOG(VB_GENERAL, LOG_ERR, QString("%1: too many redirects").arg(url.toString())); @@ -81,6 +81,8 @@ bool MythSingleDownload::DownloadURL(const QUrl &url, QByteArray *buffer, } else if (m_errorcode == QNetworkReply::NoError) { + if (final_url != nullptr) + *final_url = url.toString(); *m_buffer += m_reply->readAll(); m_errorstring.clear(); ret = true; diff --git a/mythtv/libs/libmythbase/mythsingledownload.h b/mythtv/libs/libmythbase/mythsingledownload.h index 32b6fe558a0..afc7c8f4763 100644 --- a/mythtv/libs/libmythbase/mythsingledownload.h +++ b/mythtv/libs/libmythbase/mythsingledownload.h @@ -29,7 +29,7 @@ class MBASE_PUBLIC MythSingleDownload : public QObject ~MythSingleDownload(void) = default; bool DownloadURL(const QUrl &url, QByteArray *buffer, uint timeout = 30000, - uint redirs = 0, qint64 maxsize = 0); + uint redirs = 0, qint64 maxsize = 0, QString *final_url = nullptr); void Cancel(void); QString ErrorString(void) const { return m_errorstring; } QNetworkReply::NetworkError ErrorCode(void) const { return m_errorcode; }