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 @@ -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 } @@ -1019,6 +1022,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 #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 -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 &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,8 @@ void redirectionRequested(const QUrl &destination); void sslErrors(const QList &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 @@ -349,6 +349,8 @@ #ifndef QT_NO_OPENSSL connect(http, SIGNAL(sslErrors(QList)), SLOT(sslErrors(QList))); + 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 @@ -777,6 +777,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 +796,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*)), 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 &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)) + 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 &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 &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 &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 &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))) {