85919d29e2
Issue #2424
106 lines
3.6 KiB
Diff
106 lines
3.6 KiB
Diff
qt5_qtnetwork.patch
|
|
|
|
From: Christian Prochaska <christian.prochaska@genode-labs.com>
|
|
|
|
|
|
---
|
|
qtbase/src/network/access/qhttpnetworkreply.cpp | 8 ++++++++
|
|
qtbase/src/network/socket/qnet_unix_p.h | 10 ++++++++++
|
|
qtbase/src/network/ssl/qsslconfiguration_p.h | 9 +++++++++
|
|
qtbase/src/network/ssl/qsslsocket_openssl.cpp | 3 +++
|
|
4 files changed, 30 insertions(+)
|
|
|
|
diff --git a/qtbase/src/network/access/qhttpnetworkreply.cpp b/qtbase/src/network/access/qhttpnetworkreply.cpp
|
|
index f1b0a84..eae866e 100644
|
|
--- a/qtbase/src/network/access/qhttpnetworkreply.cpp
|
|
+++ b/qtbase/src/network/access/qhttpnetworkreply.cpp
|
|
@@ -247,8 +247,16 @@ void QHttpNetworkReply::setReadBufferSize(qint64 size)
|
|
|
|
bool QHttpNetworkReply::supportsUserProvidedDownloadBuffer()
|
|
{
|
|
+#ifdef Q_OS_GENODE
|
|
+ /*
|
|
+ * Without this change Arora shows garbage when loading, for example,
|
|
+ * www.genode.org
|
|
+ */
|
|
+ return false;
|
|
+#else
|
|
Q_D(QHttpNetworkReply);
|
|
return (!d->isChunked() && !d->autoDecompress && d->bodyLength > 0 && d->statusCode == 200);
|
|
+#endif
|
|
}
|
|
|
|
void QHttpNetworkReply::setUserProvidedDownloadBuffer(char* b)
|
|
diff --git a/qtbase/src/network/socket/qnet_unix_p.h b/qtbase/src/network/socket/qnet_unix_p.h
|
|
index 1481f56..63ca9a8 100644
|
|
--- a/qtbase/src/network/socket/qnet_unix_p.h
|
|
+++ b/qtbase/src/network/socket/qnet_unix_p.h
|
|
@@ -179,6 +179,10 @@ static inline in_addr_t qt_safe_inet_addr(const char *cp)
|
|
|
|
static inline int qt_safe_sendmsg(int sockfd, const struct msghdr *msg, int flags)
|
|
{
|
|
+#ifdef Q_OS_GENODE
|
|
+ qWarning("qt_safe_sendmsg(): not implemented");
|
|
+ return -1;
|
|
+#else
|
|
#ifdef MSG_NOSIGNAL
|
|
flags |= MSG_NOSIGNAL;
|
|
#else
|
|
@@ -188,14 +192,20 @@ static inline int qt_safe_sendmsg(int sockfd, const struct msghdr *msg, int flag
|
|
int ret;
|
|
EINTR_LOOP(ret, ::sendmsg(sockfd, msg, flags));
|
|
return ret;
|
|
+#endif /* Q_OS_GENODE */
|
|
}
|
|
|
|
static inline int qt_safe_recvmsg(int sockfd, struct msghdr *msg, int flags)
|
|
{
|
|
+#ifdef Q_OS_GENODE
|
|
+ qWarning("qt_safe_recvmsg(): not implemented");
|
|
+ return -1;
|
|
+#else
|
|
int ret;
|
|
|
|
EINTR_LOOP(ret, ::recvmsg(sockfd, msg, flags));
|
|
return ret;
|
|
+#endif /* Q_OS_GENODE */
|
|
}
|
|
|
|
QT_END_NAMESPACE
|
|
diff --git a/qtbase/src/network/ssl/qsslconfiguration_p.h b/qtbase/src/network/ssl/qsslconfiguration_p.h
|
|
index 3fd1252..56251ca 100644
|
|
--- a/qtbase/src/network/ssl/qsslconfiguration_p.h
|
|
+++ b/qtbase/src/network/ssl/qsslconfiguration_p.h
|
|
@@ -76,7 +76,16 @@ public:
|
|
QSslConfigurationPrivate()
|
|
: sessionProtocol(QSsl::UnknownProtocol),
|
|
protocol(QSsl::SecureProtocols),
|
|
+#ifdef Q_OS_GENODE
|
|
+ /*
|
|
+ * With enabled peer verification, currently often a 'handshake error'
|
|
+ * occurs. This patch disables the peer verification until a fix for
|
|
+ * the handshake problem has been found.
|
|
+ */
|
|
+ peerVerifyMode(QSslSocket::VerifyNone),
|
|
+#else
|
|
peerVerifyMode(QSslSocket::AutoVerifyPeer),
|
|
+#endif
|
|
peerVerifyDepth(0),
|
|
allowRootCertOnDemandLoading(true),
|
|
peerSessionShared(false),
|
|
diff --git a/qtbase/src/network/ssl/qsslsocket_openssl.cpp b/qtbase/src/network/ssl/qsslsocket_openssl.cpp
|
|
index 82644c1..1701cf4 100644
|
|
--- a/qtbase/src/network/ssl/qsslsocket_openssl.cpp
|
|
+++ b/qtbase/src/network/ssl/qsslsocket_openssl.cpp
|
|
@@ -481,7 +481,10 @@ bool QSslSocketPrivate::ensureLibraryLoaded()
|
|
if (q_SSL_library_init() != 1)
|
|
return false;
|
|
q_SSL_load_error_strings();
|
|
+#ifndef Q_OS_GENODE
|
|
+ /* FIXME: currently, on Genode this function causes 'exit(1)' */
|
|
q_OpenSSL_add_all_algorithms();
|
|
+#endif
|
|
|
|
#if OPENSSL_VERSION_NUMBER >= 0x10001000L
|
|
if (q_SSLeay() >= 0x10001000L)
|