From 1a5f247e865011b07afda259fe87134e82e3b72f Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Thu, 2 May 2024 21:21:10 +0300 Subject: [PATCH] kio: remove redundant KIO::SlaveBase methods assume there is no metadata if empty, otherwise it is 2x the trip - one time to check and one time to get the metadata Signed-off-by: Ivailo Monev --- kio/kio/slavebase.cpp | 16 -------------- kio/kio/slavebase.h | 12 ---------- kioslave/curl/kio_curl.cpp | 45 ++++++++++++++++++-------------------- 3 files changed, 21 insertions(+), 52 deletions(-) diff --git a/kio/kio/slavebase.cpp b/kio/kio/slavebase.cpp index b9a19a43..dc3768ce 100644 --- a/kio/kio/slavebase.cpp +++ b/kio/kio/slavebase.cpp @@ -350,22 +350,6 @@ QString SlaveBase::metaData(const QString &key) const return QString(); } -MetaData SlaveBase::allMetaData() const -{ - return d->m_incomingMetaData; -} - -bool SlaveBase::hasMetaData(const QString &key) const -{ - if (d->m_incomingMetaData.contains(key)) { - return true; - } - if (d->configData.contains(key)) { - return true; - } - return false; -} - KConfigGroup *SlaveBase::config() { return d->configGroup; diff --git a/kio/kio/slavebase.h b/kio/kio/slavebase.h index 2b7d2f6f..8beb6d94 100644 --- a/kio/kio/slavebase.h +++ b/kio/kio/slavebase.h @@ -237,24 +237,12 @@ public: * data() or finished() signal. */ void setMetaData(const QString &key, const QString &value); - - /** - * Queries for the existence of a certain config/meta-data entry - * send by the application to the slave. - */ - bool hasMetaData(const QString &key) const; /** * Queries for config/meta-data send by the application to the slave. */ QString metaData(const QString &key) const; - - /** - * Contains all metadata (but no config) sent by the application to the slave. - */ - MetaData allMetaData() const; - /** * Returns a configuration object to query config/meta-data information * from. diff --git a/kioslave/curl/kio_curl.cpp b/kioslave/curl/kio_curl.cpp index 0f986574..4d176b76 100644 --- a/kioslave/curl/kio_curl.cpp +++ b/kioslave/curl/kio_curl.cpp @@ -537,9 +537,9 @@ void CurlProtocol::get(const KUrl &url) } CURLcode curlresult = CURLE_OK; - if (hasMetaData(QLatin1String("resume"))) { - Q_ASSERT(sizeof(qlonglong) == sizeof(curl_off_t)); - const qlonglong resumeoffset = metaData(QLatin1String("resume")).toLongLong(); + const qlonglong resumeoffset = metaData(QLatin1String("resume")).toLongLong(); + if (resumeoffset > 0) { + Q_ASSERT(sizeof(qlonglong) == sizeof(curl_off_t));; kDebug(7103) << "Resume offset" << resumeoffset; curlresult = curl_easy_setopt(m_curl, CURLOPT_RESUME_FROM_LARGE, curl_off_t(resumeoffset)); if (curlresult != CURLE_OK) { @@ -966,15 +966,12 @@ bool CurlProtocol::setupCurl(const KUrl &url, const bool ftp) } #endif - kDebug(7103) << "Metadata" << allMetaData(); - - if (hasMetaData(QLatin1String("UserAgent"))) { - const QByteArray useragentbytes = metaData("UserAgent").toAscii(); - curlresult = curl_easy_setopt(m_curl, CURLOPT_USERAGENT, useragentbytes.constData()); - if (curlresult != CURLE_OK) { - KIO_CURL_ERROR(curlresult); - return false; - } + // should not be empty, see KIO::Scheduler + const QByteArray useragentbytes = metaData("UserAgent").toAscii(); + curlresult = curl_easy_setopt(m_curl, CURLOPT_USERAGENT, useragentbytes.constData()); + if (curlresult != CURLE_OK) { + KIO_CURL_ERROR(curlresult); + return false; } const bool noauth = (metaData("no-auth") == QLatin1String("yes")); @@ -1007,20 +1004,20 @@ bool CurlProtocol::setupCurl(const KUrl &url, const bool ftp) m_curlheaders = nullptr; } if (m_ishttp) { - if (hasMetaData(QLatin1String("Languages"))) { - m_curlheaders = curl_slist_append(m_curlheaders, QByteArray("Accept-Language: ") + metaData("Languages").toAscii()); + // also should not be empty, see KIO::Scheduler + const QByteArray languagesbytes = metaData("Languages").toAscii(); + m_curlheaders = curl_slist_append(m_curlheaders, QByteArray("Accept-Language: ") + languagesbytes); + const QByteArray charsetsbytes = metaData("Charsets").toAscii(); + m_curlheaders = curl_slist_append(m_curlheaders, QByteArray("Accept-Charset: ") + charsetsbytes); + + const QByteArray acceptbytes = metaData("accept").toAscii(); + if (!acceptbytes.isEmpty()) { + m_curlheaders = curl_slist_append(m_curlheaders, QByteArray("Accept: ") + acceptbytes); } - if (hasMetaData(QLatin1String("Charsets"))) { - m_curlheaders = curl_slist_append(m_curlheaders, QByteArray("Accept-Charset: ") + metaData("Charsets").toAscii()); - } - - if (hasMetaData(QLatin1String("accept"))) { - m_curlheaders = curl_slist_append(m_curlheaders, QByteArray("Accept: ") + metaData("accept").toAscii()); - } - - if (hasMetaData(QLatin1String("Authorization"))) { - m_curlheaders = curl_slist_append(m_curlheaders, QByteArray("Authorization: ") + metaData("Authorization").toAscii()); + const QByteArray authorizationbytes = metaData("Authorization").toAscii(); + if (!authorizationbytes.isEmpty()) { + m_curlheaders = curl_slist_append(m_curlheaders, QByteArray("Authorization: ") + authorizationbytes); } curlresult = curl_easy_setopt(m_curl, CURLOPT_HTTPHEADER, m_curlheaders);