summaryrefslogtreecommitdiff
path: root/src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp')
-rw-r--r--src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp20
1 files changed, 12 insertions, 8 deletions
diff --git a/src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp b/src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp
index 7c877c6..85ea41a 100644
--- a/src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp
+++ b/src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp
@@ -110,15 +110,20 @@ QNetworkReply *AccelTreeResourceLoader::load(const QUrl &uri,
Q_ASSERT(networkManager);
Q_ASSERT(uri.isValid());
- NetworkLoop networkLoop;
-
+ const bool ftpSchemeUsed = (uri.scheme() == QStringLiteral("ftp"));
+ // QNAM doesn't have support for SynchronousRequestAttribute in its ftp backend.
+ QEventLoop ftpNetworkLoop;
QNetworkRequest request(uri);
+ if (!ftpSchemeUsed)
+ request.setAttribute(QNetworkRequest::SynchronousRequestAttribute, true);
QNetworkReply *const reply = networkManager->get(request);
- networkLoop.connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), SLOT(error(QNetworkReply::NetworkError)));
- networkLoop.connect(reply, SIGNAL(finished()), SLOT(finished()));
+ if (ftpSchemeUsed) {
+ ftpNetworkLoop.connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), SLOT(quit()));
+ ftpNetworkLoop.connect(reply, SIGNAL(finished()), SLOT(quit()));
+ ftpNetworkLoop.exec(QEventLoop::ExcludeUserInputEvents);
+ }
- if(networkLoop.exec(QEventLoop::ExcludeUserInputEvents))
- {
+ if (reply->error() != QNetworkReply::NoError) {
const QString errorMessage(escape(reply->errorString()));
/* Note, we delete reply before we exit this function with error(). */
@@ -130,8 +135,7 @@ QNetworkReply *AccelTreeResourceLoader::load(const QUrl &uri,
context->error(errorMessage, ReportContext::FODC0002, location);
return 0;
- }
- else
+ } else
return reply;
}