From b8989f937aa931113845dcd65b5d1a7e5fd8bee4 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Tue, 19 Aug 2014 12:55:04 +0200 Subject: Properly null-terminate ifreq::irf_name It's unclear whether it has to be, but there are a lot of patches floating around on the net that indicate that Coverty requires this, and the SIOCGIFADDR micro-howto also NUL-terminates the string. So who is Qt to differ? Change-Id: I1aa5a2de47a58b1d9b73556d5a6ddc48b2c40ce3 Reviewed-by: Thiago Macieira --- src/plugins/bearer/generic/qgenericengine.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'src/plugins/bearer') diff --git a/src/plugins/bearer/generic/qgenericengine.cpp b/src/plugins/bearer/generic/qgenericengine.cpp index d2579372c7..d687539d84 100644 --- a/src/plugins/bearer/generic/qgenericengine.cpp +++ b/src/plugins/bearer/generic/qgenericengine.cpp @@ -165,6 +165,7 @@ static QNetworkConfiguration::BearerType qGetInterfaceType(const QString &interf ifreq request; strncpy(request.ifr_name, interface.toLocal8Bit().data(), sizeof(request.ifr_name)); + request.ifr_name[sizeof(request.ifr_name) - 1] = '\0'; int result = ioctl(sock, SIOCGIFHWADDR, &request); close(sock); -- cgit v1.2.3 From 38621713150b663355ebeb799a5a50d8e39a3c38 Mon Sep 17 00:00:00 2001 From: Lorn Potter Date: Fri, 22 Aug 2014 20:08:15 +1000 Subject: remove always ask option. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Jolla removed the always ask option in the UI, which is the reason for all this code. Now, if mobile data is autoconnectable, whether roaming or home, it will be connected. Change-Id: I6a86315262e8c4c5551b2b2097389559096f14d5 Reviewed-by: Pasi Sjöholm Reviewed-by: Robin Burchell --- src/plugins/bearer/connman/connman.pro | 1 - src/plugins/bearer/connman/qconnmanengine.cpp | 56 +++------------------------ src/plugins/bearer/connman/qconnmanengine.h | 5 --- 3 files changed, 5 insertions(+), 57 deletions(-) (limited to 'src/plugins/bearer') diff --git a/src/plugins/bearer/connman/connman.pro b/src/plugins/bearer/connman/connman.pro index 0da2dfacf6..bc4efe8b62 100644 --- a/src/plugins/bearer/connman/connman.pro +++ b/src/plugins/bearer/connman/connman.pro @@ -6,7 +6,6 @@ load(qt_plugin) QT = core network-private dbus CONFIG += link_pkgconfig -packagesExist(connectionagent) { DEFINES += QT_HAS_CONNECTIONAGENT } HEADERS += qconnmanservice_linux_p.h \ qofonoservice_linux_p.h \ diff --git a/src/plugins/bearer/connman/qconnmanengine.cpp b/src/plugins/bearer/connman/qconnmanengine.cpp index 797c30c7c6..ee219f00ac 100644 --- a/src/plugins/bearer/connman/qconnmanengine.cpp +++ b/src/plugins/bearer/connman/qconnmanengine.cpp @@ -54,11 +54,6 @@ #include #include #include -#ifdef QT_HAS_CONNECTIONAGENT -#include -#include -#include -#endif #ifndef QT_NO_BEARERMANAGEMENT #ifndef QT_NO_DBUS @@ -78,9 +73,6 @@ QConnmanEngine::QConnmanEngine(QObject *parent) QConnmanEngine::~QConnmanEngine() { -#ifdef QT_HAS_CONNECTIONAGENT - qt_safe_close(inotifyFileDescriptor); -#endif } bool QConnmanEngine::connmanAvailable() const @@ -108,16 +100,6 @@ void QConnmanEngine::initialize() addServiceConfiguration(servPath); } Q_EMIT updateCompleted(); -#ifdef QT_HAS_CONNECTIONAGENT - QSettings confFile(QStringLiteral("nemomobile"),QStringLiteral("connectionagent")); - - inotifyFileDescriptor = ::inotify_init(); - inotifyWatcher = ::inotify_add_watch(inotifyFileDescriptor, QFile::encodeName(confFile.fileName()), IN_MODIFY); - if (inotifyWatcher > 0) { - QSocketNotifier *notifier = new QSocketNotifier(inotifyFileDescriptor, QSocketNotifier::Read, this); - connect(notifier, SIGNAL(activated(int)), this, SLOT(inotifyActivated())); - } -#endif } void QConnmanEngine::changedModem() @@ -257,12 +239,11 @@ QNetworkSession::State QConnmanEngine::sessionStateForId(const QString &id) return QNetworkSession::Disconnected; } - if (servState == QLatin1String("association") || servState == QLatin1String("configuration") - || servState == QLatin1String("ready")) { + if (servState == QLatin1String("association") || servState == QLatin1String("configuration")) { return QNetworkSession::Connecting; } - if (servState == QLatin1String("online")) { + if (servState == QLatin1String("online") || servState == QLatin1String("ready")) { return QNetworkSession::Connected; } @@ -402,9 +383,8 @@ QNetworkConfiguration::StateFlags QConnmanEngine::getStateForService(const QStri if (serv->type() == QLatin1String("cellular")) { - if (!serv->autoConnect() - || (serv->roaming() - && (isAlwaysAskRoaming() || !isRoamingAllowed(serv->path())))) { + if (!serv->autoConnect()|| (serv->roaming() + && !isRoamingAllowed(serv->path()))) { flag = (flag | QNetworkConfiguration::Defined); } else { flag = (flag | QNetworkConfiguration::Discovered); @@ -418,7 +398,7 @@ QNetworkConfiguration::StateFlags QConnmanEngine::getStateForService(const QStri flag = QNetworkConfiguration::Undefined; } } - if (state == QLatin1String("online")) { + if (state == QLatin1String("online") || state == QLatin1String("ready")) { flag = (flag | QNetworkConfiguration::Active); } @@ -557,17 +537,6 @@ bool QConnmanEngine::requiresPolling() const return false; } -bool QConnmanEngine::isAlwaysAskRoaming() -{ -#ifdef QT_HAS_CONNECTIONAGENT - QSettings confFile(QStringLiteral("nemomobile"),QStringLiteral("connectionagent")); - confFile.beginGroup(QStringLiteral("Connectionagent")); - return confFile.value(QStringLiteral("askForRoaming")).toBool(); -#else - return false; -#endif -} - void QConnmanEngine::reEvaluateCellular() { Q_FOREACH (const QString &servicePath, connmanManager->getServices()) { @@ -577,21 +546,6 @@ void QConnmanEngine::reEvaluateCellular() } } -void QConnmanEngine::inotifyActivated() -{ -#ifdef QT_HAS_CONNECTIONAGENT - - char buffer[1024]; - int len = qt_safe_read(inotifyFileDescriptor, (void *)buffer, sizeof(buffer)); - if (len > 0) { - struct inotify_event *event = (struct inotify_event *)buffer; - if (event->wd == inotifyWatcher && (event->mask & IN_MODIFY) == 0) { - QTimer::singleShot(1000, this, SLOT(reEvaluateCellular())); //give this time to finish write - } - } -#endif -} - QT_END_NAMESPACE #endif // QT_NO_DBUS diff --git a/src/plugins/bearer/connman/qconnmanengine.h b/src/plugins/bearer/connman/qconnmanengine.h index 4a4e91659b..4d5495ae86 100644 --- a/src/plugins/bearer/connman/qconnmanengine.h +++ b/src/plugins/bearer/connman/qconnmanengine.h @@ -108,7 +108,6 @@ private Q_SLOTS: void serviceStateChanged(const QString &state); void configurationChange(QConnmanServiceInterface * service); void reEvaluateCellular(); - void inotifyActivated(); private: QConnmanManagerInterface *connmanManager; @@ -134,12 +133,8 @@ private: QNetworkConfiguration::BearerType ofonoTechToBearerType(const QString &type); bool isRoamingAllowed(const QString &context); - bool isAlwaysAskRoaming(); QMap connmanServiceInterfaces; - int inotifyWatcher; - int inotifyFileDescriptor; - protected: bool requiresPolling() const; }; -- cgit v1.2.3 From 1d7408cc8b1a62966ab311e2fb2e6007b1a357fc Mon Sep 17 00:00:00 2001 From: Dyami Caliri Date: Fri, 22 Aug 2014 08:35:29 -0700 Subject: CoreWLan: terminate scan thread in QCoreWlanEngine destructor The scan thread can take an indeterminate amount of time, often longer than the 5 seconds we had previously waited. Since this destructor is only called when the application quits, it's ok that some resources may be lost. Task-number: QTBUG-36000 Change-Id: Ib184156b5a23c39ea4f7937a26ecb099554bd4de Reviewed-by: Peter Hartmann --- src/plugins/bearer/corewlan/qcorewlanengine.mm | 3 ++- src/plugins/bearer/corewlan/qcorewlanengine_10_6.mm | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) (limited to 'src/plugins/bearer') diff --git a/src/plugins/bearer/corewlan/qcorewlanengine.mm b/src/plugins/bearer/corewlan/qcorewlanengine.mm index 554ad26e51..65e70876f2 100644 --- a/src/plugins/bearer/corewlan/qcorewlanengine.mm +++ b/src/plugins/bearer/corewlan/qcorewlanengine.mm @@ -419,7 +419,8 @@ QCoreWlanEngine::QCoreWlanEngine(QObject *parent) QCoreWlanEngine::~QCoreWlanEngine() { - scanThread->wait(5000); + scanThread->terminate(); + scanThread->wait(); while (!foundConfigurations.isEmpty()) delete foundConfigurations.takeFirst(); diff --git a/src/plugins/bearer/corewlan/qcorewlanengine_10_6.mm b/src/plugins/bearer/corewlan/qcorewlanengine_10_6.mm index ba1cf33258..6cf614cb30 100644 --- a/src/plugins/bearer/corewlan/qcorewlanengine_10_6.mm +++ b/src/plugins/bearer/corewlan/qcorewlanengine_10_6.mm @@ -404,7 +404,8 @@ QCoreWlanEngine::QCoreWlanEngine(QObject *parent) QCoreWlanEngine::~QCoreWlanEngine() { - scanThread->wait(5000); + scanThread->terminate(); + scanThread->wait(); while (!foundConfigurations.isEmpty()) delete foundConfigurations.takeFirst(); -- cgit v1.2.3