diff options
Diffstat (limited to 'src/network')
-rw-r--r-- | src/network/access/access.pri | 4 | ||||
-rw-r--r-- | src/network/access/qhttpnetworkconnectionchannel.cpp | 3 | ||||
-rw-r--r-- | src/network/access/qnetworkaccessmanager.cpp | 9 | ||||
-rw-r--r-- | src/network/access/qnetworkreplyfileimpl.cpp (renamed from src/network/access/qfilenetworkreply.cpp) | 43 | ||||
-rw-r--r-- | src/network/access/qnetworkreplyfileimpl_p.h (renamed from src/network/access/qfilenetworkreply_p.h) | 24 | ||||
-rw-r--r-- | src/network/access/qnetworkreplyimpl.cpp | 41 | ||||
-rw-r--r-- | src/network/access/qnetworkreplyimpl_p.h | 9 | ||||
-rw-r--r-- | src/network/kernel/qhostinfo.cpp | 24 | ||||
-rw-r--r-- | src/network/network.pro | 15 | ||||
-rw-r--r-- | src/network/ssl/qsslsocket.cpp | 2 | ||||
-rw-r--r-- | src/network/ssl/qsslsocket_openssl.cpp | 37 |
11 files changed, 116 insertions, 95 deletions
diff --git a/src/network/access/access.pri b/src/network/access/access.pri index 6a0cd32..e255a0d 100644 --- a/src/network/access/access.pri +++ b/src/network/access/access.pri @@ -8,7 +8,6 @@ HEADERS += \ access/qhttpnetworkreply_p.h \ access/qhttpnetworkconnection_p.h \ access/qhttpnetworkconnectionchannel_p.h \ - access/qfilenetworkreply_p.h \ access/qnetworkaccessmanager.h \ access/qnetworkaccessmanager_p.h \ access/qnetworkaccesscache_p.h \ @@ -28,6 +27,7 @@ HEADERS += \ access/qnetworkreply.h \ access/qnetworkreply_p.h \ access/qnetworkreplyimpl_p.h \ + access/qnetworkreplyfileimpl_p.h \ access/qabstractnetworkcache_p.h \ access/qabstractnetworkcache.h \ access/qnetworkdiskcache_p.h \ @@ -41,7 +41,6 @@ SOURCES += \ access/qhttpnetworkreply.cpp \ access/qhttpnetworkconnection.cpp \ access/qhttpnetworkconnectionchannel.cpp \ - access/qfilenetworkreply.cpp \ access/qnetworkaccessmanager.cpp \ access/qnetworkaccesscache.cpp \ access/qnetworkaccessbackend.cpp \ @@ -56,6 +55,7 @@ SOURCES += \ access/qnetworkrequest.cpp \ access/qnetworkreply.cpp \ access/qnetworkreplyimpl.cpp \ + access/qnetworkreplyfileimpl.cpp \ access/qabstractnetworkcache.cpp \ access/qnetworkdiskcache.cpp diff --git a/src/network/access/qhttpnetworkconnectionchannel.cpp b/src/network/access/qhttpnetworkconnectionchannel.cpp index e39f9ed..617602d 100644 --- a/src/network/access/qhttpnetworkconnectionchannel.cpp +++ b/src/network/access/qhttpnetworkconnectionchannel.cpp @@ -427,7 +427,8 @@ void QHttpNetworkConnectionChannel::_q_receiveReply() replyPrivate->totalProgress += haveRead; // the user will get notified of it via progress signal - emit reply->dataReadProgress(replyPrivate->totalProgress, replyPrivate->bodyLength); + if (haveRead > 0) + emit reply->dataReadProgress(replyPrivate->totalProgress, replyPrivate->bodyLength); } else if (!replyPrivate->isChunked() && !replyPrivate->autoDecompress && replyPrivate->bodyLength > 0) { // bulk files like images should fulfill these properties and diff --git a/src/network/access/qnetworkaccessmanager.cpp b/src/network/access/qnetworkaccessmanager.cpp index 234305e..9738a4f 100644 --- a/src/network/access/qnetworkaccessmanager.cpp +++ b/src/network/access/qnetworkaccessmanager.cpp @@ -54,7 +54,7 @@ #include "qnetworkaccessfilebackend_p.h" #include "qnetworkaccessdatabackend_p.h" #include "qnetworkaccessdebugpipebackend_p.h" -#include "qfilenetworkreply_p.h" +#include "qnetworkreplyfileimpl_p.h" #include "QtCore/qbuffer.h" #include "QtCore/qurl.h" @@ -949,11 +949,10 @@ QNetworkReply *QNetworkAccessManager::createRequest(QNetworkAccessManager::Opera bool isLocalFile = req.url().isLocalFile(); // fast path for GET on file:// URLs - // The QNetworkAccessFileBackend will right now only be used - // for PUT or qrc:// + // The QNetworkAccessFileBackend will right now only be used for PUT if ((op == QNetworkAccessManager::GetOperation || op == QNetworkAccessManager::HeadOperation) - && isLocalFile) { - return new QFileNetworkReply(this, req, op); + && (isLocalFile || req.url().scheme() == QLatin1String("qrc"))) { + return new QNetworkReplyFileImpl(this, req, op); } #ifndef QT_NO_BEARERMANAGEMENT diff --git a/src/network/access/qfilenetworkreply.cpp b/src/network/access/qnetworkreplyfileimpl.cpp index 8c0fd17..10fa97e 100644 --- a/src/network/access/qfilenetworkreply.cpp +++ b/src/network/access/qnetworkreplyfileimpl.cpp @@ -39,7 +39,7 @@ ** ****************************************************************************/ -#include "qfilenetworkreply_p.h" +#include "qnetworkreplyfileimpl_p.h" #include "QtCore/qdatetime.h" #include <QtCore/QCoreApplication> @@ -48,22 +48,22 @@ QT_BEGIN_NAMESPACE -QFileNetworkReplyPrivate::QFileNetworkReplyPrivate() +QNetworkReplyFileImplPrivate::QNetworkReplyFileImplPrivate() : QNetworkReplyPrivate(), fileEngine(0), fileSize(0), filePos(0) { } -QFileNetworkReplyPrivate::~QFileNetworkReplyPrivate() +QNetworkReplyFileImplPrivate::~QNetworkReplyFileImplPrivate() { delete fileEngine; } -QFileNetworkReply::~QFileNetworkReply() +QNetworkReplyFileImpl::~QNetworkReplyFileImpl() { } -QFileNetworkReply::QFileNetworkReply(QObject *parent, const QNetworkRequest &req, const QNetworkAccessManager::Operation op) - : QNetworkReply(*new QFileNetworkReplyPrivate(), parent) +QNetworkReplyFileImpl::QNetworkReplyFileImpl(QObject *parent, const QNetworkRequest &req, const QNetworkAccessManager::Operation op) + : QNetworkReply(*new QNetworkReplyFileImplPrivate(), parent) { setRequest(req); setUrl(req.url()); @@ -71,7 +71,7 @@ QFileNetworkReply::QFileNetworkReply(QObject *parent, const QNetworkRequest &req setFinished(true); QNetworkReply::open(QIODevice::ReadOnly); - QFileNetworkReplyPrivate *d = (QFileNetworkReplyPrivate*) d_func(); + QNetworkReplyFileImplPrivate *d = (QNetworkReplyFileImplPrivate*) d_func(); QUrl url = req.url(); if (url.host() == QLatin1String("localhost")) @@ -96,7 +96,10 @@ QFileNetworkReply::QFileNetworkReply(QObject *parent, const QNetworkRequest &req QString fileName = url.toLocalFile(); if (fileName.isEmpty()) { - fileName = url.toString(QUrl::RemoveAuthority | QUrl::RemoveFragment | QUrl::RemoveQuery); + if (url.scheme() == QLatin1String("qrc")) + fileName = QLatin1Char(':') + url.path(); + else + fileName = url.toString(QUrl::RemoveAuthority | QUrl::RemoveFragment | QUrl::RemoveQuery); } QFileInfo fi(fileName); @@ -140,48 +143,48 @@ QFileNetworkReply::QFileNetworkReply(QObject *parent, const QNetworkRequest &req QMetaObject::invokeMethod(this, "readyRead", Qt::QueuedConnection); QMetaObject::invokeMethod(this, "finished", Qt::QueuedConnection); } -void QFileNetworkReply::close() +void QNetworkReplyFileImpl::close() { - Q_D(QFileNetworkReply); + Q_D(QNetworkReplyFileImpl); QNetworkReply::close(); if (d->fileEngine) d->fileEngine->close(); } -void QFileNetworkReply::abort() +void QNetworkReplyFileImpl::abort() { - Q_D(QFileNetworkReply); + Q_D(QNetworkReplyFileImpl); QNetworkReply::close(); if (d->fileEngine) d->fileEngine->close(); } -qint64 QFileNetworkReply::bytesAvailable() const +qint64 QNetworkReplyFileImpl::bytesAvailable() const { - Q_D(const QFileNetworkReply); + Q_D(const QNetworkReplyFileImpl); if (!d->fileEngine) return 0; return QNetworkReply::bytesAvailable() + d->fileSize - d->filePos; } -bool QFileNetworkReply::isSequential () const +bool QNetworkReplyFileImpl::isSequential () const { return true; } -qint64 QFileNetworkReply::size() const +qint64 QNetworkReplyFileImpl::size() const { - Q_D(const QFileNetworkReply); + Q_D(const QNetworkReplyFileImpl); return d->fileSize; } /*! \internal */ -qint64 QFileNetworkReply::readData(char *data, qint64 maxlen) +qint64 QNetworkReplyFileImpl::readData(char *data, qint64 maxlen) { - Q_D(QFileNetworkReply); + Q_D(QNetworkReplyFileImpl); if (!d->fileEngine) return -1; @@ -198,5 +201,5 @@ qint64 QFileNetworkReply::readData(char *data, qint64 maxlen) QT_END_NAMESPACE -#include "moc_qfilenetworkreply_p.cpp" +#include "moc_qnetworkreplyfileimpl_p.cpp" diff --git a/src/network/access/qfilenetworkreply_p.h b/src/network/access/qnetworkreplyfileimpl_p.h index 227c775..627363f 100644 --- a/src/network/access/qfilenetworkreply_p.h +++ b/src/network/access/qnetworkreplyfileimpl_p.h @@ -39,8 +39,8 @@ ** ****************************************************************************/ -#ifndef QFILENETWORKREPLY_P_H -#define QFILENETWORKREPLY_P_H +#ifndef QNETWORKREPLYFILEIMPL_H +#define QNETWORKREPLYFILEIMPL_H // // W A R N I N G @@ -62,13 +62,13 @@ QT_BEGIN_NAMESPACE -class QFileNetworkReplyPrivate; -class QFileNetworkReply: public QNetworkReply +class QNetworkReplyFileImplPrivate; +class QNetworkReplyFileImpl: public QNetworkReply { Q_OBJECT public: - QFileNetworkReply(QObject *parent, const QNetworkRequest &req, const QNetworkAccessManager::Operation op); - ~QFileNetworkReply(); + QNetworkReplyFileImpl(QObject *parent, const QNetworkRequest &req, const QNetworkAccessManager::Operation op); + ~QNetworkReplyFileImpl(); virtual void abort(); // reimplemented from QNetworkReply @@ -79,22 +79,22 @@ public: virtual qint64 readData(char *data, qint64 maxlen); - Q_DECLARE_PRIVATE(QFileNetworkReply) + Q_DECLARE_PRIVATE(QNetworkReplyFileImpl) }; -class QFileNetworkReplyPrivate: public QNetworkReplyPrivate +class QNetworkReplyFileImplPrivate: public QNetworkReplyPrivate { public: - QFileNetworkReplyPrivate(); - ~QFileNetworkReplyPrivate(); + QNetworkReplyFileImplPrivate(); + ~QNetworkReplyFileImplPrivate(); QAbstractFileEngine *fileEngine; qint64 fileSize; qint64 filePos; - Q_DECLARE_PUBLIC(QFileNetworkReply) + Q_DECLARE_PUBLIC(QNetworkReplyFileImpl) }; QT_END_NAMESPACE -#endif // QFILENETWORKREPLY_P_H +#endif // QNETWORKREPLYFILEIMPL_H diff --git a/src/network/access/qnetworkreplyimpl.cpp b/src/network/access/qnetworkreplyimpl.cpp index 3a629cf..4c4815c 100644 --- a/src/network/access/qnetworkreplyimpl.cpp +++ b/src/network/access/qnetworkreplyimpl.cpp @@ -49,14 +49,10 @@ #include "QtNetwork/qnetworksession.h" #include "qnetworkaccesshttpbackend_p.h" #include "qnetworkaccessmanager_p.h" -#include <QVarLengthArray> #include <QtCore/QCoreApplication> -QT_BEGIN_NAMESPACE -typedef QSharedPointer<QVarLengthArray<char, 0> > QVarLengthArraySharedPointer; -QT_END_NAMESPACE -Q_DECLARE_METATYPE(QVarLengthArraySharedPointer) +Q_DECLARE_METATYPE(QSharedPointer<char>) QT_BEGIN_NAMESPACE @@ -69,7 +65,9 @@ inline QNetworkReplyImplPrivate::QNetworkReplyImplPrivate() httpStatusCode(0), state(Idle) , downloadBuffer(0) - , downloadBufferPosition(0) + , downloadBufferReadPosition(0) + , downloadBufferCurrentSize(0) + , downloadBufferMaximumSize(0) { } @@ -603,6 +601,11 @@ void QNetworkReplyImplPrivate::appendDownstreamData(const QByteArray &data) qFatal("QNetworkReplyImplPrivate::appendDownstreamData not implemented"); } +static void downloadBufferDeleter(char *ptr) +{ + delete[] ptr; +} + char* QNetworkReplyImplPrivate::getDownloadBuffer(qint64 size) { Q_Q(QNetworkReplyImpl); @@ -611,12 +614,12 @@ char* QNetworkReplyImplPrivate::getDownloadBuffer(qint64 size) if (!downloadBuffer) { QVariant bufferAllocationPolicy = request.attribute(QNetworkRequest::MaximumDownloadBufferSizeAttribute); if (bufferAllocationPolicy.isValid() && bufferAllocationPolicy.toLongLong() >= size) { - downloadBufferArray = QSharedPointer<QVarLengthArray<char, 0> >(new QVarLengthArray<char, 0>()); - downloadBufferArray->reserve(size); - - downloadBuffer = downloadBufferArray->data(); + downloadBufferCurrentSize = 0; + downloadBufferMaximumSize = size; + downloadBuffer = new char[downloadBufferMaximumSize]; // throws if allocation fails + downloadBufferPointer = QSharedPointer<char>(downloadBuffer, downloadBufferDeleter); - q->setAttribute(QNetworkRequest::DownloadBufferAttribute, qVariantFromValue<QSharedPointer<QVarLengthArray<char, 0> > > (downloadBufferArray)); + q->setAttribute(QNetworkRequest::DownloadBufferAttribute, qVariantFromValue<QSharedPointer<char> > (downloadBufferPointer)); } } @@ -644,12 +647,12 @@ void QNetworkReplyImplPrivate::appendDownstreamDataDownloadBuffer(qint64 bytesRe bytesDownloaded = bytesReceived; lastBytesDownloaded = bytesReceived; - // Update the array so our user (e.g. QtWebKit) knows the real size - if (bytesReceived > 0) - downloadBufferArray->resize(bytesReceived); + downloadBufferCurrentSize = bytesReceived; emit q->downloadProgress(bytesDownloaded, bytesTotal); - emit q->readyRead(); + // Only emit readyRead when actual data is there + if (bytesDownloaded > 0) + emit q->readyRead(); } void QNetworkReplyImplPrivate::finished() @@ -846,7 +849,7 @@ qint64 QNetworkReplyImpl::bytesAvailable() const // Special case for the "zero copy" download buffer Q_D(const QNetworkReplyImpl); if (d->downloadBuffer) { - qint64 maxAvail = d->downloadBufferArray->size() - d->downloadBufferPosition; + qint64 maxAvail = d->downloadBufferCurrentSize - d->downloadBufferReadPosition; return QNetworkReply::bytesAvailable() + maxAvail; } @@ -907,12 +910,12 @@ qint64 QNetworkReplyImpl::readData(char *data, qint64 maxlen) // Special case code if we have the "zero copy" download buffer if (d->downloadBuffer) { - qint64 maxAvail = qMin<qint64>(d->downloadBufferArray->size() - d->downloadBufferPosition, maxlen); + qint64 maxAvail = qMin<qint64>(d->downloadBufferCurrentSize - d->downloadBufferReadPosition, maxlen); if (maxAvail == 0) return d->state == QNetworkReplyImplPrivate::Finished ? -1 : 0; // FIXME what about "Aborted" state? - qMemCopy(data, d->downloadBuffer + d->downloadBufferPosition, maxAvail); - d->downloadBufferPosition += maxAvail; + qMemCopy(data, d->downloadBuffer + d->downloadBufferReadPosition, maxAvail); + d->downloadBufferReadPosition += maxAvail; return maxAvail; } diff --git a/src/network/access/qnetworkreplyimpl_p.h b/src/network/access/qnetworkreplyimpl_p.h index 2cb3082..e944601 100644 --- a/src/network/access/qnetworkreplyimpl_p.h +++ b/src/network/access/qnetworkreplyimpl_p.h @@ -62,7 +62,7 @@ #include "QtCore/qbuffer.h" #include "private/qringbuffer_p.h" #include "private/qbytedata_p.h" -#include <QVarLengthArray> +#include <QSharedPointer> QT_BEGIN_NAMESPACE @@ -206,9 +206,12 @@ public: State state; // only used when the "zero copy" style is used. Else readBuffer is used. - QSharedPointer< QVarLengthArray<char, 0> > downloadBufferArray; + // Please note that the whole "zero copy" download buffer API is private right now. Do not use it. + qint64 downloadBufferReadPosition; + qint64 downloadBufferCurrentSize; + qint64 downloadBufferMaximumSize; + QSharedPointer<char> downloadBufferPointer; char* downloadBuffer; - qint64 downloadBufferPosition; Q_DECLARE_PUBLIC(QNetworkReplyImpl) }; diff --git a/src/network/kernel/qhostinfo.cpp b/src/network/kernel/qhostinfo.cpp index 7908182..c8fc45e 100644 --- a/src/network/kernel/qhostinfo.cpp +++ b/src/network/kernel/qhostinfo.cpp @@ -224,7 +224,10 @@ QHostInfo QHostInfo::fromName(const QString &name) qDebug("QHostInfo::fromName(\"%s\")",name.toLatin1().constData()); #endif - return QHostInfoAgent::fromName(name); + QHostInfo hostInfo = QHostInfoAgent::fromName(name); + QHostInfoLookupManager *manager = theHostInfoLookupManager(); + manager->cache.put(name, hostInfo); + return hostInfo; } /*! @@ -448,14 +451,17 @@ void QHostInfoRunnable::run() resultEmitter.emitResultsReady(hostInfo); // now also iterate through the postponed ones - QMutableListIterator<QHostInfoRunnable*> iterator(manager->postponedLookups); - while (iterator.hasNext()) { - QHostInfoRunnable* postponed = iterator.next(); - if (toBeLookedUp == postponed->toBeLookedUp) { - // we can now emit - iterator.remove(); - hostInfo.setLookupId(postponed->id); - postponed->resultEmitter.emitResultsReady(hostInfo); + { + QMutexLocker locker(&manager->mutex); + QMutableListIterator<QHostInfoRunnable*> iterator(manager->postponedLookups); + while (iterator.hasNext()) { + QHostInfoRunnable* postponed = iterator.next(); + if (toBeLookedUp == postponed->toBeLookedUp) { + // we can now emit + iterator.remove(); + hostInfo.setLookupId(postponed->id); + postponed->resultEmitter.emitResultsReady(hostInfo); + } } } diff --git a/src/network/network.pro b/src/network/network.pro index 5e33080..7ed7d3a 100644 --- a/src/network/network.pro +++ b/src/network/network.pro @@ -28,19 +28,4 @@ QMAKE_LIBS += $$QMAKE_LIBS_NETWORK symbian { TARGET.UID3=0x2001B2DE LIBS += -lesock -linsock -lcertstore -lefsrv -lctframework - - # Partial upgrade SIS file - vendorinfo = \ - "; Localised Vendor name" \ - "%{\"Nokia, Qt\"}" \ - " " \ - "; Unique Vendor name" \ - ":\"Nokia, Qt\"" \ - " " - pu_header = "; Partial upgrade package for testing QtGui changes without reinstalling everything" \ - "$${LITERAL_HASH}{\"Qt network\"}, (0x2001E61C), $${QT_MAJOR_VERSION},$${QT_MINOR_VERSION},$${QT_PATCH_VERSION}, TYPE=PU" - partial_upgrade.pkg_prerules = pu_header vendorinfo - partial_upgrade.sources = $$QMAKE_LIBDIR_QT/QtNetwork.dll - partial_upgrade.path = c:/sys/bin - DEPLOYMENT = partial_upgrade $$DEPLOYMENT } diff --git a/src/network/ssl/qsslsocket.cpp b/src/network/ssl/qsslsocket.cpp index f18c629..c9f421f 100644 --- a/src/network/ssl/qsslsocket.cpp +++ b/src/network/ssl/qsslsocket.cpp @@ -1354,7 +1354,7 @@ QList<QSslCertificate> QSslSocket::defaultCaCertificates() */ QList<QSslCertificate> QSslSocket::systemCaCertificates() { - QSslSocketPrivate::ensureInitialized(); + // we are calling ensureInitialized() in the method below return QSslSocketPrivate::systemCaCertificates(); } diff --git a/src/network/ssl/qsslsocket_openssl.cpp b/src/network/ssl/qsslsocket_openssl.cpp index 5033393..cd224df 100644 --- a/src/network/ssl/qsslsocket_openssl.cpp +++ b/src/network/ssl/qsslsocket_openssl.cpp @@ -772,14 +772,35 @@ QList<QSslCertificate> QSslSocketPrivate::systemCaCertificates() } } #elif defined(Q_OS_UNIX) && !defined(Q_OS_SYMBIAN) - systemCerts.append(QSslCertificate::fromPath(QLatin1String("/var/ssl/certs/*.pem"), QSsl::Pem, QRegExp::Wildcard)); // AIX - systemCerts.append(QSslCertificate::fromPath(QLatin1String("/usr/local/ssl/certs/*.pem"), QSsl::Pem, QRegExp::Wildcard)); // Solaris - systemCerts.append(QSslCertificate::fromPath(QLatin1String("/opt/openssl/certs/*.pem"), QSsl::Pem, QRegExp::Wildcard)); // HP-UX - systemCerts.append(QSslCertificate::fromPath(QLatin1String("/etc/ssl/certs/*.pem"), QSsl::Pem, QRegExp::Wildcard)); // (K)ubuntu, OpenSUSE, Mandriva, ... - systemCerts.append(QSslCertificate::fromPath(QLatin1String("/etc/pki/tls/certs/ca-bundle.crt"), QSsl::Pem)); // Fedora - systemCerts.append(QSslCertificate::fromPath(QLatin1String("/usr/lib/ssl/certs/*.pem"), QSsl::Pem, QRegExp::Wildcard)); // Gentoo, Mandrake - systemCerts.append(QSslCertificate::fromPath(QLatin1String("/usr/share/ssl/*.pem"), QSsl::Pem, QRegExp::Wildcard)); // Centos, Redhat, SuSE - systemCerts.append(QSslCertificate::fromPath(QLatin1String("/usr/local/ssl/*.pem"), QSsl::Pem, QRegExp::Wildcard)); // Normal OpenSSL Tarball + QSet<QString> certFiles; + QList<QByteArray> directories; + directories << "/etc/ssl/certs/"; // (K)ubuntu, OpenSUSE, Mandriva, MeeGo ... + directories << "/usr/lib/ssl/certs/"; // Gentoo, Mandrake + directories << "/usr/share/ssl/"; // Centos, Redhat, SuSE + directories << "/usr/local/ssl/"; // Normal OpenSSL Tarball + directories << "/var/ssl/certs/"; // AIX + directories << "/usr/local/ssl/certs/"; // Solaris + directories << "/opt/openssl/certs/"; // HP-UX + + QDir currentDir; + QStringList nameFilters; + nameFilters << QLatin1String("*.pem") << QLatin1String("*.crt"); + currentDir.setNameFilters(nameFilters); + for (int a = 0; a < directories.count(); a++) { + currentDir.setPath(QLatin1String(directories.at(a))); + QDirIterator it(currentDir); + while(it.hasNext()) { + it.next(); + // use canonical path here to not load the same certificate twice if symlinked + certFiles.insert(it.fileInfo().canonicalFilePath()); + } + } + QSetIterator<QString> it(certFiles); + while(it.hasNext()) { + systemCerts.append(QSslCertificate::fromPath(it.next())); + } + systemCerts.append(QSslCertificate::fromPath(QLatin1String("/etc/pki/tls/certs/ca-bundle.crt"), QSsl::Pem)); // Fedora, Mandriva + #elif defined(Q_OS_SYMBIAN) QList<QByteArray> certs; QScopedPointer<CSymbianCertificateRetriever> retriever(CSymbianCertificateRetriever::NewL()); |