|
|
|
diff -ru qt-everywhere-opensource-src-4.6.3.orig/src/network/access/qhttpnetworkconnectionchannel.cpp qt-everywhere-opensource-src-4.6.3.mrw/src/network/access/qhttpnetworkconnectionchannel.cpp
|
|
|
|
--- qt-everywhere-opensource-src-4.6.3.orig/src/network/access/qhttpnetworkconnectionchannel.cpp 2010-06-02 04:03:17.000000000 +0200
|
|
|
|
+++ qt-everywhere-opensource-src-4.6.3.mrw/src/network/access/qhttpnetworkconnectionchannel.cpp 2011-01-13 17:44:14.984841004 +0100
|
|
|
|
@@ -46,6 +46,8 @@
|
|
|
|
#include <qpair.h>
|
|
|
|
#include <qdebug.h>
|
|
|
|
|
|
|
|
+#include <cassert>
|
|
|
|
+
|
|
|
|
#ifndef QT_NO_HTTP
|
|
|
|
|
|
|
|
#ifndef QT_NO_OPENSSL
|
|
|
|
@@ -130,6 +132,9 @@
|
|
|
|
QObject::connect(sslSocket, SIGNAL(encryptedBytesWritten(qint64)),
|
|
|
|
this, SLOT(_q_encryptedBytesWritten(qint64)),
|
|
|
|
Qt::DirectConnection);
|
|
|
|
+ assert(QObject::connect(sslSocket, SIGNAL(extendedContextInitialization(ssl_ctx_st*)),
|
|
|
|
+ this, SLOT(_q_extendedContextInitialization(ssl_ctx_st*)),
|
|
|
|
+ Qt::DirectConnection));
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
@@ -1019,6 +1024,13 @@
|
|
|
|
emit connection->sslErrors(errors);
|
|
|
|
}
|
|
|
|
|
|
|
|
+void QHttpNetworkConnectionChannel::_q_extendedContextInitialization(ssl_ctx_st* ctx)
|
|
|
|
+{
|
|
|
|
+ if (!socket)
|
|
|
|
+ return;
|
|
|
|
+ emit connection->extendedContextInitialization(ctx);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
void QHttpNetworkConnectionChannel::_q_encryptedBytesWritten(qint64 bytes)
|
|
|
|
{
|
|
|
|
Q_UNUSED(bytes);
|
|
|
|
diff -ru qt-everywhere-opensource-src-4.6.3.orig/src/network/access/qhttpnetworkconnectionchannel_p.h qt-everywhere-opensource-src-4.6.3.mrw/src/network/access/qhttpnetworkconnectionchannel_p.h
|
|
|
|
--- qt-everywhere-opensource-src-4.6.3.orig/src/network/access/qhttpnetworkconnectionchannel_p.h 2010-06-02 04:03:17.000000000 +0200
|
|
|
|
+++ qt-everywhere-opensource-src-4.6.3.mrw/src/network/access/qhttpnetworkconnectionchannel_p.h 2011-01-13 16:23:56.744840998 +0100
|
|
|
|
@@ -76,6 +76,10 @@
|
|
|
|
# include <QtNetwork/qtcpsocket.h>
|
|
|
|
#endif
|
|
|
|
|
|
|
|
+#ifndef QT_NO_OPENSSL
|
|
|
|
+struct ssl_ctx_st;
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
QT_BEGIN_NAMESPACE
|
|
|
|
|
|
|
|
class QHttpNetworkRequest;
|
|
|
|
@@ -175,6 +179,7 @@
|
|
|
|
#ifndef QT_NO_OPENSSL
|
|
|
|
void _q_encrypted(); // start sending request (https)
|
|
|
|
void _q_sslErrors(const QList<QSslError> &errors); // ssl errors from the socket
|
|
|
|
+ void _q_extendedContextInitialization(ssl_ctx_st* ctx);
|
|
|
|
void _q_encryptedBytesWritten(qint64 bytes); // proceed sending
|
|
|
|
#endif
|
|
|
|
};
|
|
|
|
diff -ru qt-everywhere-opensource-src-4.6.3.orig/src/network/access/qhttpnetworkconnection_p.h qt-everywhere-opensource-src-4.6.3.mrw/src/network/access/qhttpnetworkconnection_p.h
|
|
|
|
--- qt-everywhere-opensource-src-4.6.3.orig/src/network/access/qhttpnetworkconnection_p.h 2010-06-02 04:03:17.000000000 +0200
|
|
|
|
+++ qt-everywhere-opensource-src-4.6.3.mrw/src/network/access/qhttpnetworkconnection_p.h 2011-01-13 15:25:26.204841004 +0100
|
|
|
|
@@ -123,6 +123,7 @@
|
|
|
|
|
|
|
|
Q_SIGNALS:
|
|
|
|
void sslErrors(const QList<QSslError> &errors);
|
|
|
|
+ void extendedContextInitialization(ssl_ctx_st*);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
Q_SIGNALS:
|
|
|
|
diff -ru qt-everywhere-opensource-src-4.6.3.orig/src/network/access/qnetworkaccessbackend.cpp qt-everywhere-opensource-src-4.6.3.mrw/src/network/access/qnetworkaccessbackend.cpp
|
|
|
|
--- qt-everywhere-opensource-src-4.6.3.orig/src/network/access/qnetworkaccessbackend.cpp 2010-06-02 04:03:17.000000000 +0200
|
|
|
|
+++ qt-everywhere-opensource-src-4.6.3.mrw/src/network/access/qnetworkaccessbackend.cpp 2011-01-13 16:03:11.054841008 +0100
|
|
|
|
@@ -341,4 +341,13 @@
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
+void QNetworkAccessBackend::extendedContextInitialization(ssl_ctx_st* ctx)
|
|
|
|
+{
|
|
|
|
+#ifndef QT_NO_OPENSSL
|
|
|
|
+ reply->extendedContextInitialization(ctx);
|
|
|
|
+#else
|
|
|
|
+ Q_UNUSED(ctx);
|
|
|
|
+#endif
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
QT_END_NAMESPACE
|
|
|
|
diff -ru qt-everywhere-opensource-src-4.6.3.orig/src/network/access/qnetworkaccessbackend_p.h qt-everywhere-opensource-src-4.6.3.mrw/src/network/access/qnetworkaccessbackend_p.h
|
|
|
|
--- qt-everywhere-opensource-src-4.6.3.orig/src/network/access/qnetworkaccessbackend_p.h 2010-06-02 04:03:17.000000000 +0200
|
|
|
|
+++ qt-everywhere-opensource-src-4.6.3.mrw/src/network/access/qnetworkaccessbackend_p.h 2011-01-13 16:23:31.054841004 +0100
|
|
|
|
@@ -56,6 +56,10 @@
|
|
|
|
#include "qnetworkreplyimpl_p.h"
|
|
|
|
#include "QtCore/qobject.h"
|
|
|
|
|
|
|
|
+#ifndef QT_NO_OPENSSL
|
|
|
|
+struct ssl_ctx_st;
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
QT_BEGIN_NAMESPACE
|
|
|
|
|
|
|
|
class QAuthenticator;
|
|
|
|
@@ -185,7 +189,7 @@
|
|
|
|
void redirectionRequested(const QUrl &destination);
|
|
|
|
void sslErrors(const QList<QSslError> &errors);
|
|
|
|
void emitReplyUploadProgress(qint64 bytesSent, qint64 bytesTotal);
|
|
|
|
-
|
|
|
|
+ void extendedContextInitialization(ssl_ctx_st* ctx);
|
|
|
|
private:
|
|
|
|
friend class QNetworkAccessManager;
|
|
|
|
friend class QNetworkAccessManagerPrivate;
|
|
|
|
diff -ru qt-everywhere-opensource-src-4.6.3.orig/src/network/access/qnetworkaccesshttpbackend.cpp qt-everywhere-opensource-src-4.6.3.mrw/src/network/access/qnetworkaccesshttpbackend.cpp
|
|
|
|
--- qt-everywhere-opensource-src-4.6.3.orig/src/network/access/qnetworkaccesshttpbackend.cpp 2010-06-02 04:03:17.000000000 +0200
|
|
|
|
+++ qt-everywhere-opensource-src-4.6.3.mrw/src/network/access/qnetworkaccesshttpbackend.cpp 2011-01-13 17:31:39.044840998 +0100
|
|
|
|
@@ -52,6 +52,8 @@
|
|
|
|
#include "QtCore/qdatetime.h"
|
|
|
|
#include "QtNetwork/qsslconfiguration.h"
|
|
|
|
|
|
|
|
+#include <cassert>
|
|
|
|
+
|
|
|
|
#ifndef QT_NO_HTTP
|
|
|
|
|
|
|
|
#include <string.h> // for strchr
|
|
|
|
@@ -349,6 +351,8 @@
|
|
|
|
#ifndef QT_NO_OPENSSL
|
|
|
|
connect(http, SIGNAL(sslErrors(QList<QSslError>)),
|
|
|
|
SLOT(sslErrors(QList<QSslError>)));
|
|
|
|
+ assert(connect(http, SIGNAL(extendedContextInitialization(ssl_ctx_st*)),
|
|
|
|
+ SLOT(extendedContextInitialization(ssl_ctx_st*))));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
diff -ru qt-everywhere-opensource-src-4.6.3.orig/src/network/access/qnetworkaccessmanager.cpp qt-everywhere-opensource-src-4.6.3.mrw/src/network/access/qnetworkaccessmanager.cpp
|
|
|
|
--- qt-everywhere-opensource-src-4.6.3.orig/src/network/access/qnetworkaccessmanager.cpp 2010-06-02 04:03:17.000000000 +0200
|
|
|
|
+++ qt-everywhere-opensource-src-4.6.3.mrw/src/network/access/qnetworkaccessmanager.cpp 2011-01-13 17:31:56.404841001 +0100
|
|
|
|
@@ -60,6 +60,8 @@
|
|
|
|
#include "QtNetwork/qauthenticator.h"
|
|
|
|
#include "QtNetwork/qsslconfiguration.h"
|
|
|
|
|
|
|
|
+#include <cassert>
|
|
|
|
+
|
|
|
|
QT_BEGIN_NAMESPACE
|
|
|
|
|
|
|
|
#ifndef QT_NO_HTTP
|
|
|
|
@@ -777,6 +779,16 @@
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
+void QNetworkAccessManagerPrivate::_q_extendedContextInitialization(ssl_ctx_st* ctx)
|
|
|
|
+{
|
|
|
|
+#ifndef QT_NO_OPENSSL
|
|
|
|
+ Q_Q(QNetworkAccessManager);
|
|
|
|
+ emit q->extendedContextInitialization(ctx);
|
|
|
|
+#else
|
|
|
|
+ Q_UNUSED(ctx);
|
|
|
|
+#endif
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
QNetworkReply *QNetworkAccessManagerPrivate::postProcess(QNetworkReply *reply)
|
|
|
|
{
|
|
|
|
Q_Q(QNetworkAccessManager);
|
|
|
|
@@ -786,6 +798,7 @@
|
|
|
|
/* In case we're compiled without SSL support, we don't have this signal and we need to
|
|
|
|
* avoid getting a connection error. */
|
|
|
|
q->connect(reply, SIGNAL(sslErrors(QList<QSslError>)), SLOT(_q_replySslErrors(QList<QSslError>)));
|
|
|
|
+ assert(q->connect(reply, SIGNAL(extendedContextInitialization(ssl_ctx_st*)), SLOT(_q_extendedContextInitialization(ssl_ctx_st*))));
|
|
|
|
#endif
|
|
|
|
|
|
|
|
return reply;
|
|
|
|
diff -ru qt-everywhere-opensource-src-4.6.3.orig/src/network/access/qnetworkaccessmanager.h qt-everywhere-opensource-src-4.6.3.mrw/src/network/access/qnetworkaccessmanager.h
|
|
|
|
--- qt-everywhere-opensource-src-4.6.3.orig/src/network/access/qnetworkaccessmanager.h 2010-06-02 04:03:17.000000000 +0200
|
|
|
|
+++ qt-everywhere-opensource-src-4.6.3.mrw/src/network/access/qnetworkaccessmanager.h 2011-01-13 18:02:19.694840999 +0100
|
|
|
|
@@ -46,6 +46,10 @@
|
|
|
|
|
|
|
|
QT_BEGIN_HEADER
|
|
|
|
|
|
|
|
+#ifndef QT_NO_OPENSSL
|
|
|
|
+struct ssl_ctx_st;
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
QT_BEGIN_NAMESPACE
|
|
|
|
|
|
|
|
QT_MODULE(Network)
|
|
|
|
@@ -111,6 +115,7 @@
|
|
|
|
void finished(QNetworkReply *reply);
|
|
|
|
#ifndef QT_NO_OPENSSL
|
|
|
|
void sslErrors(QNetworkReply *reply, const QList<QSslError> &errors);
|
|
|
|
+ void extendedContextInitialization(ssl_ctx_st* ctx);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
protected:
|
|
|
|
@@ -122,6 +127,7 @@
|
|
|
|
Q_DECLARE_PRIVATE(QNetworkAccessManager)
|
|
|
|
Q_PRIVATE_SLOT(d_func(), void _q_replyFinished())
|
|
|
|
Q_PRIVATE_SLOT(d_func(), void _q_replySslErrors(QList<QSslError>))
|
|
|
|
+ Q_PRIVATE_SLOT(d_func(), void _q_extendedContextInitialization(ssl_ctx_st*))
|
|
|
|
};
|
|
|
|
|
|
|
|
QT_END_NAMESPACE
|
|
|
|
diff -ru qt-everywhere-opensource-src-4.6.3.orig/src/network/access/qnetworkaccessmanager_p.h qt-everywhere-opensource-src-4.6.3.mrw/src/network/access/qnetworkaccessmanager_p.h
|
|
|
|
--- qt-everywhere-opensource-src-4.6.3.orig/src/network/access/qnetworkaccessmanager_p.h 2010-06-02 04:03:17.000000000 +0200
|
|
|
|
+++ qt-everywhere-opensource-src-4.6.3.mrw/src/network/access/qnetworkaccessmanager_p.h 2011-01-13 16:23:47.974840996 +0100
|
|
|
|
@@ -59,6 +59,10 @@
|
|
|
|
#include "private/qobject_p.h"
|
|
|
|
#include "QtNetwork/qnetworkproxy.h"
|
|
|
|
|
|
|
|
+#ifndef QT_NO_OPENSSL
|
|
|
|
+struct ssl_ctx_st;
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
QT_BEGIN_NAMESPACE
|
|
|
|
|
|
|
|
class QAuthenticator;
|
|
|
|
@@ -80,6 +84,7 @@
|
|
|
|
|
|
|
|
void _q_replyFinished();
|
|
|
|
void _q_replySslErrors(const QList<QSslError> &errors);
|
|
|
|
+ void _q_extendedContextInitialization(ssl_ctx_st* ctx);
|
|
|
|
QNetworkReply *postProcess(QNetworkReply *reply);
|
|
|
|
void createCookieJar() const;
|
|
|
|
|
|
|
|
diff -ru qt-everywhere-opensource-src-4.6.3.orig/src/network/access/qnetworkreply.h qt-everywhere-opensource-src-4.6.3.mrw/src/network/access/qnetworkreply.h
|
|
|
|
--- qt-everywhere-opensource-src-4.6.3.orig/src/network/access/qnetworkreply.h 2010-06-02 04:03:17.000000000 +0200
|
|
|
|
+++ qt-everywhere-opensource-src-4.6.3.mrw/src/network/access/qnetworkreply.h 2011-01-13 16:24:14.664840998 +0100
|
|
|
|
@@ -51,6 +51,10 @@
|
|
|
|
|
|
|
|
QT_BEGIN_HEADER
|
|
|
|
|
|
|
|
+#ifndef QT_NO_OPENSSL
|
|
|
|
+struct ssl_ctx_st;
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
QT_BEGIN_NAMESPACE
|
|
|
|
|
|
|
|
QT_MODULE(Network)
|
|
|
|
@@ -146,6 +150,7 @@
|
|
|
|
void error(QNetworkReply::NetworkError);
|
|
|
|
#ifndef QT_NO_OPENSSL
|
|
|
|
void sslErrors(const QList<QSslError> &errors);
|
|
|
|
+ void extendedContextInitialization(ssl_ctx_st*);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
void uploadProgress(qint64 bytesSent, qint64 bytesTotal);
|
|
|
|
diff -ru qt-everywhere-opensource-src-4.6.3.orig/src/network/access/qnetworkreplyimpl.cpp qt-everywhere-opensource-src-4.6.3.mrw/src/network/access/qnetworkreplyimpl.cpp
|
|
|
|
--- qt-everywhere-opensource-src-4.6.3.orig/src/network/access/qnetworkreplyimpl.cpp 2010-06-02 04:03:17.000000000 +0200
|
|
|
|
+++ qt-everywhere-opensource-src-4.6.3.mrw/src/network/access/qnetworkreplyimpl.cpp 2011-01-13 16:27:21.854841009 +0100
|
|
|
|
@@ -590,6 +590,16 @@
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
+void QNetworkReplyImplPrivate::extendedContextInitialization(ssl_ctx_st* ctx)
|
|
|
|
+{
|
|
|
|
+#ifndef QT_NO_OPENSSL
|
|
|
|
+ Q_Q(QNetworkReplyImpl);
|
|
|
|
+ emit q->extendedContextInitialization(ctx);
|
|
|
|
+#else
|
|
|
|
+ Q_UNUSED(ctx);
|
|
|
|
+#endif
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
bool QNetworkReplyImplPrivate::isFinished() const
|
|
|
|
{
|
|
|
|
return (state == Finished || state == Aborted);
|
|
|
|
diff -ru qt-everywhere-opensource-src-4.6.3.orig/src/network/access/qnetworkreplyimpl_p.h qt-everywhere-opensource-src-4.6.3.mrw/src/network/access/qnetworkreplyimpl_p.h
|
|
|
|
--- qt-everywhere-opensource-src-4.6.3.orig/src/network/access/qnetworkreplyimpl_p.h 2010-06-02 04:03:17.000000000 +0200
|
|
|
|
+++ qt-everywhere-opensource-src-4.6.3.mrw/src/network/access/qnetworkreplyimpl_p.h 2011-01-13 16:28:23.784841003 +0100
|
|
|
|
@@ -63,6 +63,10 @@
|
|
|
|
#include "private/qringbuffer_p.h"
|
|
|
|
#include "private/qbytedata_p.h"
|
|
|
|
|
|
|
|
+#ifndef QT_NO_OPENSSL
|
|
|
|
+struct ssl_ctx_st;
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
QT_BEGIN_NAMESPACE
|
|
|
|
|
|
|
|
class QAbstractNetworkCache;
|
|
|
|
@@ -157,6 +161,7 @@
|
|
|
|
void metaDataChanged();
|
|
|
|
void redirectionRequested(const QUrl &target);
|
|
|
|
void sslErrors(const QList<QSslError> &errors);
|
|
|
|
+ void extendedContextInitialization(ssl_ctx_st* ctx);
|
|
|
|
|
|
|
|
bool isFinished() const;
|
|
|
|
|
|
|
|
diff -ru qt-everywhere-opensource-src-4.6.3.orig/src/network/ssl/qsslsocket.h qt-everywhere-opensource-src-4.6.3.mrw/src/network/ssl/qsslsocket.h
|
|
|
|
--- qt-everywhere-opensource-src-4.6.3.orig/src/network/ssl/qsslsocket.h 2010-06-02 04:03:17.000000000 +0200
|
|
|
|
+++ qt-everywhere-opensource-src-4.6.3.mrw/src/network/ssl/qsslsocket.h 2011-01-13 16:22:52.144840999 +0100
|
|
|
|
@@ -52,6 +52,10 @@
|
|
|
|
|
|
|
|
QT_BEGIN_HEADER
|
|
|
|
|
|
|
|
+#ifndef QT_NO_OPENSSL
|
|
|
|
+struct ssl_ctx_st;
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
QT_BEGIN_NAMESPACE
|
|
|
|
|
|
|
|
QT_MODULE(Network)
|
|
|
|
@@ -186,6 +190,7 @@
|
|
|
|
void sslErrors(const QList<QSslError> &errors);
|
|
|
|
void modeChanged(QSslSocket::SslMode newMode);
|
|
|
|
void encryptedBytesWritten(qint64 totalBytes);
|
|
|
|
+ void extendedContextInitialization(ssl_ctx_st* ctx);
|
|
|
|
|
|
|
|
protected Q_SLOTS:
|
|
|
|
void connectToHostImplementation(const QString &hostName, quint16 port,
|
|
|
|
diff -ru qt-everywhere-opensource-src-4.6.3.orig/src/network/ssl/qsslsocket_openssl.cpp qt-everywhere-opensource-src-4.6.3.mrw/src/network/ssl/qsslsocket_openssl.cpp
|
|
|
|
--- qt-everywhere-opensource-src-4.6.3.orig/src/network/ssl/qsslsocket_openssl.cpp 2010-06-02 04:03:17.000000000 +0200
|
|
|
|
+++ qt-everywhere-opensource-src-4.6.3.mrw/src/network/ssl/qsslsocket_openssl.cpp 2011-01-13 11:28:33.734841002 +0100
|
|
|
|
@@ -340,6 +340,8 @@
|
|
|
|
// Set verification depth.
|
|
|
|
if (configuration.peerVerifyDepth != 0)
|
|
|
|
q_SSL_CTX_set_verify_depth(ctx, configuration.peerVerifyDepth);
|
|
|
|
+
|
|
|
|
+ emit q->extendedContextInitialization(ctx);
|
|
|
|
|
|
|
|
// Create and initialize SSL session
|
|
|
|
if (!(ssl = q_SSL_new(ctx))) {
|