Blackberry bearer plugin: Only Report working interfaces as active
authorPeter Hartmann <phartmann@rim.com>
Tue, 23 Oct 2012 10:42:20 +0000 (12:42 +0200)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Fri, 26 Oct 2012 10:25:08 +0000 (12:25 +0200)
Some interfaces might be connected but not working (e.g. no IP address,
no gateway etc.)

In practice, this prevents the USB interface (among others) from
being reported as active and thus the QNetworkConfigurationManager
as being reported as online.
We only want Wifi and 3G etc. connections to be reported as online
when they are up.

Change-Id: I59fbe53bed8392d363a0191d589737f2304c853f
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
Reviewed-by: Andrey Leonov <aleonov@rim.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
src/plugins/bearer/blackberry/qbbengine.cpp

index 79452ae..d64a8fe 100644 (file)
@@ -316,15 +316,14 @@ void QBBEngine::updateConfiguration(const char *interface)
     const QString id = idForName(name);
 
 
-    const int numberOfIpAddresses = netstatus_interface_get_num_ip_addresses(details);
-    const bool isConnected = netstatus_interface_is_connected(details);
     const netstatus_interface_type_t type = netstatus_interface_get_type(details);
+    const netstatus_ip_status_t ipStatus = netstatus_interface_get_ip_status(details);
 
     netstatus_free_interface_details(&details);
 
     QNetworkConfiguration::StateFlags state = QNetworkConfiguration::Defined;
 
-    if (isConnected && (numberOfIpAddresses > 0))
+    if (ipStatus == NETSTATUS_IP_STATUS_OK)
         state |= QNetworkConfiguration::Active;
 
     QMutexLocker locker(&mutex);