summaryrefslogtreecommitdiffstats
path: root/src/network
diff options
context:
space:
mode:
Diffstat (limited to 'src/network')
-rw-r--r--src/network/access/qnetworkreplywasmimpl.cpp39
-rw-r--r--src/network/access/qnetworkreplywasmimpl_p.h4
-rw-r--r--src/network/configure.json62
-rw-r--r--src/network/socket/qabstractsocket.cpp2
-rw-r--r--src/network/ssl/qdtls.cpp1
5 files changed, 71 insertions, 37 deletions
diff --git a/src/network/access/qnetworkreplywasmimpl.cpp b/src/network/access/qnetworkreplywasmimpl.cpp
index 23ca62acd4..3bfe927c9f 100644
--- a/src/network/access/qnetworkreplywasmimpl.cpp
+++ b/src/network/access/qnetworkreplywasmimpl.cpp
@@ -222,11 +222,17 @@ QByteArray QNetworkReplyWasmImpl::methodName() const
void QNetworkReplyWasmImpl::close()
{
+ setFinished(true);
+ emit finished();
+
QNetworkReply::close();
}
void QNetworkReplyWasmImpl::abort()
{
+ Q_D(const QNetworkReplyWasmImpl);
+ d->doAbort();
+
close();
}
@@ -307,32 +313,29 @@ void QNetworkReplyWasmImplPrivate::setReplyAttributes(quintptr data, int statusC
handler->q_func()->setAttribute(QNetworkRequest::HttpReasonPhraseAttribute, statusReason);
}
+void QNetworkReplyWasmImplPrivate::doAbort() const
+{
+ m_xhr.call<void>("abort");
+}
+
void QNetworkReplyWasmImplPrivate::doSendRequest()
{
Q_Q(QNetworkReplyWasmImpl);
totalDownloadSize = 0;
- val xhr = val::global("XMLHttpRequest").new_();
+ m_xhr = val::global("XMLHttpRequest").new_();
std::string verb = q->methodName().toStdString();
- QUrl url;
QString extraDataString;
- if (request.url().hasQuery()) { //strip query from url
- extraDataString = request.url().query(QUrl::FullyEncoded);
- QString urlStr = request.url().toString();
- url.setUrl(urlStr.left(urlStr.indexOf("?")));
- } else {
- url = request.url();
- }
- xhr.call<void>("open", verb, url.toString().toStdString());
+ m_xhr.call<void>("open", verb, request.url().toString().toStdString());
- xhr.set("onerror", val::module_property("QNetworkReplyWasmImplPrivate_requestErrorCallback"));
- xhr.set("onload", val::module_property("QNetworkReplyWasmImplPrivate_loadCallback"));
- xhr.set("onprogress", val::module_property("QNetworkReplyWasmImplPrivate_progressCallback"));
- xhr.set("onreadystatechange", val::module_property("QNetworkReplyWasmImplPrivate_responseHeadersCallback"));
+ m_xhr.set("onerror", val::module_property("QNetworkReplyWasmImplPrivate_requestErrorCallback"));
+ m_xhr.set("onload", val::module_property("QNetworkReplyWasmImplPrivate_loadCallback"));
+ m_xhr.set("onprogress", val::module_property("QNetworkReplyWasmImplPrivate_progressCallback"));
+ m_xhr.set("onreadystatechange", val::module_property("QNetworkReplyWasmImplPrivate_responseHeadersCallback"));
- xhr.set("data-handler", val(quintptr(reinterpret_cast<void *>(this))));
+ m_xhr.set("data-handler", val(quintptr(reinterpret_cast<void *>(this))));
QByteArray contentType = request.rawHeader("Content-Type");
@@ -351,7 +354,7 @@ void QNetworkReplyWasmImplPrivate::doSendRequest()
}
if (contentType.contains("json")) {
if (!extraDataString.isEmpty()) {
- xhr.set("responseType", val("json"));
+ m_xhr.set("responseType", val("json"));
dataToSend = val(extraDataString.toStdString());
}
}
@@ -368,9 +371,9 @@ void QNetworkReplyWasmImplPrivate::doSendRequest()
}
// set request headers
for (auto header : request.rawHeaderList()) {
- xhr.call<void>("setRequestHeader", header.toStdString(), request.rawHeader(header).toStdString());
+ m_xhr.call<void>("setRequestHeader", header.toStdString(), request.rawHeader(header).toStdString());
}
- xhr.call<void>("send", dataToSend);
+ m_xhr.call<void>("send", dataToSend);
}
void QNetworkReplyWasmImplPrivate::emitReplyError(QNetworkReply::NetworkError errorCode, const QString &errorString)
diff --git a/src/network/access/qnetworkreplywasmimpl_p.h b/src/network/access/qnetworkreplywasmimpl_p.h
index 69c90de41a..e1e6bf4e24 100644
--- a/src/network/access/qnetworkreplywasmimpl_p.h
+++ b/src/network/access/qnetworkreplywasmimpl_p.h
@@ -62,6 +62,7 @@
#include <emscripten.h>
#include <emscripten/html5.h>
+#include <emscripten/val.h>
QT_BEGIN_NAMESPACE
@@ -134,6 +135,9 @@ public:
QIODevice *outgoingData;
QSharedPointer<QRingBuffer> outgoingDataBuffer;
+ emscripten::val m_xhr = emscripten::val::null();
+ void doAbort() const;
+
static QNetworkReply::NetworkError statusCodeFromHttp(int httpStatusCode, const QUrl &url);
Q_DECLARE_PUBLIC(QNetworkReplyWasmImpl)
};
diff --git a/src/network/configure.json b/src/network/configure.json
index 019f8378c7..10c4f87a2e 100644
--- a/src/network/configure.json
+++ b/src/network/configure.json
@@ -26,7 +26,11 @@
"corewlan": {
"label": "CoreWLan",
"export": "",
- "test": "corewlan",
+ "test": {
+ "lang": "objc++",
+ "main": "[CWInterface interfaceWithName:@\"en2\"];"
+ },
+ "headers": [ "CoreWLAN/CoreWLAN.h", "CoreWLAN/CWInterface.h" ],
"sources": [
"-framework CoreWLAN -framework Foundation"
]
@@ -39,13 +43,13 @@
"libproxy": {
"label": "libproxy",
"test": {
- "include": [ "proxy.h" ],
"main": [
"pxProxyFactory *factory = px_proxy_factory_new();",
"px_proxy_factory_get_proxies(factory, \"http://qt-project.org\");",
"px_proxy_factory_free(factory);"
]
},
+ "headers": "proxy.h",
"sources": [
"-lproxy"
]
@@ -53,7 +57,17 @@
"openssl_headers": {
"label": "OpenSSL Headers",
"export": "openssl",
- "test": "openssl",
+ "test": {
+ "tail": [
+ "#if !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER-0 < 0x10000000L",
+ "# error OpenSSL >= 1.0.0 is required",
+ "#endif",
+ "#if OPENSSL_VERSION_NUMBER-0 >= 0x10002000L && !defined(OPENSSL_NO_EC) && !defined(SSL_CTRL_SET_CURVES)",
+ "# error OpenSSL was reported as >= 1.0.2 but is missing required features, possibly it's libressl which is unsupported",
+ "#endif"
+ ]
+ },
+ "headers": [ "openssl/ssl.h", "openssl/opensslv.h" ],
"sources": [
{
"comment": "placeholder for OPENSSL_PATH",
@@ -63,23 +77,24 @@
},
"openssl": {
"label": "OpenSSL",
- "test": "openssl",
+ "test": {
+ "inherit": "openssl_headers",
+ "main": "SSL_free(SSL_new(0));"
+ },
"sources": [
{ "type": "openssl" },
{
- "comment": "placeholder for OPENSSL_{PATH,LIBS{,_{DEBUG,RELEASE}}}",
- "libs": "",
- "condition": "config.win32 && !features.shared"
- },
- {
"libs": "-lssleay32 -llibeay32",
- "condition": "config.win32 && features.shared"
+ "condition": "config.win32"
},
{
"libs": "-llibssl -llibcrypto",
- "condition": "config.win32"
+ "condition": "config.msvc"
},
- { "libs": "-lssl -lcrypto", "condition": "!config.win32" }
+ {
+ "libs": "-lssl -lcrypto",
+ "condition": "!config.msvc"
+ }
]
}
},
@@ -147,7 +162,14 @@
"openssl11": {
"label": "OpenSSL 1.1 support",
"type": "compile",
- "test": "unix/openssl11",
+ "test": {
+ "include": "openssl/opensslv.h",
+ "tail": [
+ "#if !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER-0 < 0x10100000L",
+ "# error OpenSSL >= 1.1 is required",
+ "#endif"
+ ]
+ },
"use": "openssl"
},
"dtls": {
@@ -195,20 +217,24 @@
},
"openssl": {
"label": "OpenSSL",
- "enable": "input.openssl == 'yes' || input.openssl == 'linked' || input.openssl == 'runtime'",
- "disable": "input.openssl == 'no' || input.ssl == 'no'",
- "autoDetect": "!config.winrt && !config.wasm",
- "condition": "!features.securetransport && (features.openssl-linked || libs.openssl_headers)",
+ "enable": "false",
+ "condition": "features.openssl-runtime || features.openssl-linked",
"output": [
"privateFeature",
{ "type": "publicQtConfig", "condition": "!features.openssl-linked" },
{ "type": "define", "negative": true, "name": "QT_NO_OPENSSL" }
]
},
+ "openssl-runtime": {
+ "autoDetect": "!config.winrt && !config.wasm",
+ "enable": "input.openssl == 'yes' || input.openssl == 'runtime'",
+ "disable": "input.openssl == 'no' || input.openssl == 'linked' || input.ssl == 'no'",
+ "condition": "!features.securetransport && libs.openssl_headers"
+ },
"openssl-linked": {
"label": " Qt directly linked to OpenSSL",
+ "autoDetect": false,
"enable": "input.openssl == 'linked'",
- "disable": "input.openssl != 'linked'",
"condition": "!features.securetransport && libs.openssl",
"output": [
"privateFeature",
diff --git a/src/network/socket/qabstractsocket.cpp b/src/network/socket/qabstractsocket.cpp
index 2f93c5fa2b..e86793cb21 100644
--- a/src/network/socket/qabstractsocket.cpp
+++ b/src/network/socket/qabstractsocket.cpp
@@ -1549,7 +1549,7 @@ void QAbstractSocket::setPauseMode(PauseModes pauseMode)
By default, the socket is bound using the DefaultForPlatform BindMode.
If a port is not specified, a random port is chosen.
- On success, the functions returns \c true and the socket enters
+ On success, the function returns \c true and the socket enters
BoundState; otherwise it returns \c false.
*/
diff --git a/src/network/ssl/qdtls.cpp b/src/network/ssl/qdtls.cpp
index bbb22aa527..3185bfa124 100644
--- a/src/network/ssl/qdtls.cpp
+++ b/src/network/ssl/qdtls.cpp
@@ -370,6 +370,7 @@ void QDtlsBasePrivate::setConfiguration(const QSslConfiguration &configuration)
dtlsConfiguration.nextProtocolNegotiationStatus = configuration.nextProtocolNegotiationStatus();
dtlsConfiguration.dtlsCookieEnabled = configuration.dtlsCookieVerificationEnabled();
dtlsConfiguration.allowRootCertOnDemandLoading = configuration.d->allowRootCertOnDemandLoading;
+ dtlsConfiguration.backendConfig = configuration.backendConfiguration();
clearDtlsError();
}