summaryrefslogtreecommitdiffstats
path: root/src/core/net/url_request_custom_job_proxy.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/net/url_request_custom_job_proxy.cpp')
-rw-r--r--src/core/net/url_request_custom_job_proxy.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/core/net/url_request_custom_job_proxy.cpp b/src/core/net/url_request_custom_job_proxy.cpp
index b9ccf7ea4..27fed7bf2 100644
--- a/src/core/net/url_request_custom_job_proxy.cpp
+++ b/src/core/net/url_request_custom_job_proxy.cpp
@@ -95,12 +95,16 @@ void URLRequestCustomJobProxy::reply(std::string mimeType, QIODevice *device)
if (m_job->m_device && !m_job->m_device->isReadable())
m_job->m_device->open(QIODevice::ReadOnly);
- qint64 size = m_job->m_device ? m_job->m_device->size() : -1;
- if (size > 0)
- m_job->set_expected_content_size(size);
+ if (m_job->m_firstBytePosition > 0)
+ m_job->m_device->seek(m_job->m_firstBytePosition);
+
+ qint64 deviceSize = m_job->m_device ? m_job->m_device->size() : -1;
+ qint64 remainingBytes = deviceSize - m_job->m_firstBytePosition;
+ if (remainingBytes > 0)
+ m_job->set_expected_content_size(remainingBytes);
+
if (m_job->m_device && m_job->m_device->isReadable()) {
m_started = true;
- m_job->m_httpStatusCode = 200;
m_job->NotifyHeadersComplete();
} else {
fail(ERR_INVALID_URL);
@@ -115,7 +119,6 @@ void URLRequestCustomJobProxy::redirect(GURL url)
if (m_job->m_device || m_job->m_error)
return;
m_job->m_redirect = url;
- m_job->m_httpStatusCode = 303;
m_started = true;
m_job->NotifyHeadersComplete();
}
@@ -140,7 +143,6 @@ void URLRequestCustomJobProxy::fail(int error)
if (!m_job)
return;
m_job->m_error = error;
- m_job->m_httpStatusCode = 500;
if (m_job->m_device)
m_job->m_device->close();
if (!m_started)