diff options
Diffstat (limited to 'src/core/net/url_request_custom_job_proxy.cpp')
-rw-r--r-- | src/core/net/url_request_custom_job_proxy.cpp | 14 |
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) |