50 #include "qnetworkaccesshttpbackend_p.h" |
50 #include "qnetworkaccesshttpbackend_p.h" |
51 #include "qnetworkaccessftpbackend_p.h" |
51 #include "qnetworkaccessftpbackend_p.h" |
52 #include "qnetworkaccessfilebackend_p.h" |
52 #include "qnetworkaccessfilebackend_p.h" |
53 #include "qnetworkaccessdatabackend_p.h" |
53 #include "qnetworkaccessdatabackend_p.h" |
54 #include "qnetworkaccessdebugpipebackend_p.h" |
54 #include "qnetworkaccessdebugpipebackend_p.h" |
|
55 #include "qfilenetworkreply_p.h" |
55 |
56 |
56 #include "QtCore/qbuffer.h" |
57 #include "QtCore/qbuffer.h" |
57 #include "QtCore/qurl.h" |
58 #include "QtCore/qurl.h" |
58 #include "QtCore/qvector.h" |
59 #include "QtCore/qvector.h" |
59 #include "QtNetwork/qauthenticator.h" |
60 #include "QtNetwork/qauthenticator.h" |
679 QNetworkReply *QNetworkAccessManager::createRequest(QNetworkAccessManager::Operation op, |
680 QNetworkReply *QNetworkAccessManager::createRequest(QNetworkAccessManager::Operation op, |
680 const QNetworkRequest &req, |
681 const QNetworkRequest &req, |
681 QIODevice *outgoingData) |
682 QIODevice *outgoingData) |
682 { |
683 { |
683 Q_D(QNetworkAccessManager); |
684 Q_D(QNetworkAccessManager); |
|
685 |
|
686 // fast path for GET on file:// URLs |
|
687 // Also if the scheme is empty we consider it a file. |
|
688 // The QNetworkAccessFileBackend will right now only be used |
|
689 // for PUT or qrc:// |
|
690 if (op == QNetworkAccessManager::GetOperation |
|
691 && (req.url().scheme() == QLatin1String("file") |
|
692 || req.url().scheme().isEmpty())) { |
|
693 return new QFileNetworkReply(this, req); |
|
694 } |
|
695 |
684 QNetworkRequest request = req; |
696 QNetworkRequest request = req; |
685 if (!request.header(QNetworkRequest::ContentLengthHeader).isValid() && |
697 if (!request.header(QNetworkRequest::ContentLengthHeader).isValid() && |
686 outgoingData && !outgoingData->isSequential()) { |
698 outgoingData && !outgoingData->isSequential()) { |
687 // request has no Content-Length |
699 // request has no Content-Length |
688 // but the data that is outgoing is random-access |
700 // but the data that is outgoing is random-access |