diff -ur /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1/src/network/access/qhttpnetworkconnectionchannel.cpp /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1.patched//src/network/access/qhttpnetworkconnectionchannel.cpp --- /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1/src/network/access/qhttpnetworkconnectionchannel.cpp 2010-11-06 02:55:17.000000000 +0100 +++ /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1.patched//src/network/access/qhttpnetworkconnectionchannel.cpp 2011-01-18 07:55:13.614841004 +0100 @@ -130,6 +130,9 @@ QObject::connect(sslSocket, SIGNAL(encryptedBytesWritten(qint64)), this, SLOT(_q_encryptedBytesWritten(qint64)), Qt::DirectConnection); + QObject::connect(sslSocket, SIGNAL(extendedContextInitialization(ssl_ctx_st*)), + this, SLOT(_q_extendedContextInitialization(ssl_ctx_st*)), + Qt::DirectConnection); } #endif } @@ -1027,6 +1030,13 @@ emit connection->sslErrors(errors); } +void QHttpNetworkConnectionChannel::_q_extendedContextInitialization(ssl_ctx_st* ctx) +{ + if (!socket) + return; + emit connection->extendedContextInitialization(ctx, qobject_cast(socket)); +} + void QHttpNetworkConnectionChannel::_q_encryptedBytesWritten(qint64 bytes) { Q_UNUSED(bytes); diff -ur /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1/src/network/access/qhttpnetworkconnectionchannel_p.h /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1.patched//src/network/access/qhttpnetworkconnectionchannel_p.h --- /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1/src/network/access/qhttpnetworkconnectionchannel_p.h 2010-11-06 02:55:18.000000000 +0100 +++ /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1.patched//src/network/access/qhttpnetworkconnectionchannel_p.h 2011-01-18 07:55:13.614841004 +0100 @@ -76,6 +76,10 @@ # include #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 &errors); // ssl errors from the socket + void _q_extendedContextInitialization(ssl_ctx_st *ctx); void _q_encryptedBytesWritten(qint64 bytes); // proceed sending #endif }; diff -ur /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1/src/network/access/qhttpnetworkconnection_p.h /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1.patched//src/network/access/qhttpnetworkconnection_p.h --- /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1/src/network/access/qhttpnetworkconnection_p.h 2010-11-06 02:55:18.000000000 +0100 +++ /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1.patched//src/network/access/qhttpnetworkconnection_p.h 2011-01-18 07:55:13.614841004 +0100 @@ -123,6 +123,7 @@ Q_SIGNALS: void sslErrors(const QList &errors); + void extendedContextInitialization(ssl_ctx_st *ctx, QSslSocket *socket); #endif Q_SIGNALS: diff -ur /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1/src/network/access/qnetworkaccessbackend.cpp /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1.patched//src/network/access/qnetworkaccessbackend.cpp --- /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1/src/network/access/qnetworkaccessbackend.cpp 2010-11-06 02:55:17.000000000 +0100 +++ /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1.patched//src/network/access/qnetworkaccessbackend.cpp 2011-01-18 07:55:13.614841004 +0100 @@ -385,4 +385,13 @@ } #endif +void QNetworkAccessBackend::extendedContextInitialization(ssl_ctx_st* ctx, QSslSocket *socket) +{ +#ifndef QT_NO_OPENSSL + reply->extendedContextInitialization(ctx, socket); +#else + Q_UNUSED(ctx); +#endif +} + QT_END_NAMESPACE diff -ur /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1/src/network/access/qnetworkaccessbackend_p.h /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1.patched//src/network/access/qnetworkaccessbackend_p.h --- /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1/src/network/access/qnetworkaccessbackend_p.h 2010-11-06 02:55:17.000000000 +0100 +++ /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1.patched//src/network/access/qnetworkaccessbackend_p.h 2011-01-18 07:55:13.614841004 +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; @@ -193,6 +197,7 @@ void redirectionRequested(const QUrl &destination); void sslErrors(const QList &errors); void emitReplyUploadProgress(qint64 bytesSent, qint64 bytesTotal); + void extendedContextInitialization(ssl_ctx_st *ctx, QSslSocket *socket); private: friend class QNetworkAccessManager; diff -ur /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1/src/network/access/qnetworkaccesshttpbackend.cpp /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1.patched//src/network/access/qnetworkaccesshttpbackend.cpp --- /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1/src/network/access/qnetworkaccesshttpbackend.cpp 2010-11-06 02:55:17.000000000 +0100 +++ /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1.patched//src/network/access/qnetworkaccesshttpbackend.cpp 2011-01-18 07:55:13.614841004 +0100 @@ -353,6 +353,8 @@ #ifndef QT_NO_OPENSSL connect(http, SIGNAL(sslErrors(QList)), SLOT(sslErrors(QList))); + connect(http, SIGNAL(extendedContextInitialization(ssl_ctx_st*, QSslSocket*)), + SLOT(extendedContextInitialization(ssl_ctx_st*, QSslSocket*))); #endif } diff -ur /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1/src/network/access/qnetworkaccessmanager.cpp /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1.patched//src/network/access/qnetworkaccessmanager.cpp --- /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1/src/network/access/qnetworkaccessmanager.cpp 2010-11-06 02:55:17.000000000 +0100 +++ /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1.patched//src/network/access/qnetworkaccessmanager.cpp 2011-01-18 07:55:13.614841004 +0100 @@ -1066,6 +1066,16 @@ #endif } +void QNetworkAccessManagerPrivate::_q_extendedContextInitialization(ssl_ctx_st *ctx, QSslSocket *socket) +{ +#ifndef QT_NO_OPENSSL + Q_Q(QNetworkAccessManager); + emit q->extendedContextInitialization(ctx, socket); +#else + Q_UNUSED(ctx); +#endif +} + QNetworkReply *QNetworkAccessManagerPrivate::postProcess(QNetworkReply *reply) { Q_Q(QNetworkAccessManager); @@ -1075,6 +1085,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)), SLOT(_q_replySslErrors(QList))); + q->connect(reply, SIGNAL(extendedContextInitialization(ssl_ctx_st*, QSslSocket*)), SLOT(_q_extendedContextInitialization(ssl_ctx_st*, QSslSocket*))); #endif return reply; diff -ur /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1/src/network/access/qnetworkaccessmanager.h /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1.patched//src/network/access/qnetworkaccessmanager.h --- /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1/src/network/access/qnetworkaccessmanager.h 2010-11-06 02:55:17.000000000 +0100 +++ /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1.patched//src/network/access/qnetworkaccessmanager.h 2011-01-18 08:35:08.334841003 +0100 @@ -46,6 +46,10 @@ QT_BEGIN_HEADER +#ifndef QT_NO_OPENSSL +struct ssl_ctx_st; +#endif + QT_BEGIN_NAMESPACE QT_MODULE(Network) @@ -62,6 +66,7 @@ class QNetworkProxy; class QNetworkProxyFactory; class QSslError; +class QSslSocket; #if !defined(QT_NO_BEARERMANAGEMENT) && !defined(QT_MOBILITY_BEARER) class QNetworkConfiguration; #endif @@ -140,6 +145,7 @@ void finished(QNetworkReply *reply); #ifndef QT_NO_OPENSSL void sslErrors(QNetworkReply *reply, const QList &errors); + void extendedContextInitialization(ssl_ctx_st *ctx, QSslSocket *socket); #endif #if !defined(QT_NO_BEARERMANAGEMENT) && !defined(QT_MOBILITY_BEARER) @@ -159,6 +165,7 @@ Q_DECLARE_PRIVATE(QNetworkAccessManager) Q_PRIVATE_SLOT(d_func(), void _q_replyFinished()) Q_PRIVATE_SLOT(d_func(), void _q_replySslErrors(QList)) + Q_PRIVATE_SLOT(d_func(), void _q_extendedContextInitialization(ssl_ctx_st*, QSslSocket*)) #if !defined(QT_NO_BEARERMANAGEMENT) && !defined(QT_MOBILITY_BEARER) Q_PRIVATE_SLOT(d_func(), void _q_networkSessionClosed()) Q_PRIVATE_SLOT(d_func(), void _q_networkSessionNewConfigurationActivated()) diff -ur /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1/src/network/access/qnetworkaccessmanager_p.h /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1.patched//src/network/access/qnetworkaccessmanager_p.h --- /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1/src/network/access/qnetworkaccessmanager_p.h 2010-11-06 02:55:18.000000000 +0100 +++ /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1.patched//src/network/access/qnetworkaccessmanager_p.h 2011-01-18 07:55:13.614841004 +0100 @@ -60,6 +60,10 @@ #include "QtNetwork/qnetworkproxy.h" #include "QtNetwork/qnetworksession.h" +#ifndef QT_NO_OPENSSL +struct ssl_ctx_st; +#endif + QT_BEGIN_NAMESPACE class QAuthenticator; @@ -87,6 +91,7 @@ void _q_replyFinished(); void _q_replySslErrors(const QList &errors); + void _q_extendedContextInitialization(ssl_ctx_st *ctx, QSslSocket *socket); QNetworkReply *postProcess(QNetworkReply *reply); void createCookieJar() const; diff -ur /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1/src/network/access/qnetworkreply.h /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1.patched//src/network/access/qnetworkreply.h --- /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1/src/network/access/qnetworkreply.h 2010-11-06 02:55:17.000000000 +0100 +++ /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1.patched//src/network/access/qnetworkreply.h 2011-01-18 08:34:28.234841008 +0100 @@ -51,6 +51,10 @@ QT_BEGIN_HEADER +#ifndef QT_NO_OPENSSL +struct ssl_ctx_st; +#endif + QT_BEGIN_NAMESPACE QT_MODULE(Network) @@ -60,6 +64,7 @@ class QAuthenticator; class QSslConfiguration; class QSslError; +class QSslSocket; class QNetworkReplyPrivate; class Q_NETWORK_EXPORT QNetworkReply: public QIODevice @@ -150,6 +155,7 @@ void error(QNetworkReply::NetworkError); #ifndef QT_NO_OPENSSL void sslErrors(const QList &errors); + void extendedContextInitialization(ssl_ctx_st *ctx, QSslSocket *socket); #endif void uploadProgress(qint64 bytesSent, qint64 bytesTotal); diff -ur /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1/src/network/access/qnetworkreplyimpl.cpp /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1.patched//src/network/access/qnetworkreplyimpl.cpp --- /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1/src/network/access/qnetworkreplyimpl.cpp 2010-11-06 02:55:17.000000000 +0100 +++ /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1.patched//src/network/access/qnetworkreplyimpl.cpp 2011-01-18 07:55:13.614841004 +0100 @@ -704,6 +704,16 @@ #endif } +void QNetworkReplyImplPrivate::extendedContextInitialization(ssl_ctx_st* ctx, QSslSocket *socket) +{ +#ifndef QT_NO_OPENSSL + Q_Q(QNetworkReplyImpl); + emit q->extendedContextInitialization(ctx, socket); +#else + Q_UNUSED(ctx); +#endif +} + bool QNetworkReplyImplPrivate::isFinished() const { return (state == Finished || state == Aborted); diff -ur /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1/src/network/access/qnetworkreplyimpl_p.h /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1.patched//src/network/access/qnetworkreplyimpl_p.h --- /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1/src/network/access/qnetworkreplyimpl_p.h 2010-11-06 02:55:17.000000000 +0100 +++ /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1.patched//src/network/access/qnetworkreplyimpl_p.h 2011-01-18 07:55:13.614841004 +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; @@ -168,6 +172,7 @@ void metaDataChanged(); void redirectionRequested(const QUrl &target); void sslErrors(const QList &errors); + void extendedContextInitialization(ssl_ctx_st *ctx, QSslSocket *socket); bool isFinished() const; diff -ur /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1/src/network/ssl/qsslsocket.h /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1.patched//src/network/ssl/qsslsocket.h --- /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1/src/network/ssl/qsslsocket.h 2010-11-06 02:55:18.000000000 +0100 +++ /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1.patched//src/network/ssl/qsslsocket.h 2011-01-18 07:55:13.614841004 +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 &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 -ur /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1/src/network/ssl/qsslsocket_openssl.cpp /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1.patched//src/network/ssl/qsslsocket_openssl.cpp --- /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1/src/network/ssl/qsslsocket_openssl.cpp 2010-11-06 02:55:18.000000000 +0100 +++ /home/marc/svn/swisssurfer/qt/qt-everywhere-opensource-src-4.7.1.patched//src/network/ssl/qsslsocket_openssl.cpp 2011-01-18 07:56:51.924841003 +0100 @@ -371,6 +371,8 @@ 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))) { // ### Bad error code