summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hartmann <phartmann@rim.com>2013-02-21 14:42:25 +0100
committerPeter Hartmann <phartmann@blackberry.com>2013-05-07 16:42:42 +0200
commit002ef1697057cf82ef36546e6037179ba7eaf6ab (patch)
tree26aea3b5304bf5a4f61661ca82329b736b40d8c3
parentcff0b9e8aa6a8f411138d0e11715a09e5fb5e94f (diff)
downloadqt4-tools-002ef1697057cf82ef36546e6037179ba7eaf6ab.tar.gz
[BB10-internal] BB10 bearer plugin: populate list of host addresses
... so the sockets will know which address to bind to in case a non- default interface should be used. Change-Id: Ice0f946bf265fda50bd538a1f26d5fdd7a0dbd70 Signed-off-by: Peter Hartmann <phartmann@rim.com>
-rw-r--r--src/plugins/bearer/blackberry/qbbengine.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/plugins/bearer/blackberry/qbbengine.cpp b/src/plugins/bearer/blackberry/qbbengine.cpp
index 7233dfa598..6b301f58a9 100644
--- a/src/plugins/bearer/blackberry/qbbengine.cpp
+++ b/src/plugins/bearer/blackberry/qbbengine.cpp
@@ -46,6 +46,7 @@
#include <QThreadStorage>
#include <QStringList>
#include <QTimer>
+#include <QHostAddress>
#include <bps/netstatus.h>
@@ -333,6 +334,14 @@ void QBBEngine::updateConfiguration(const char *interface)
const netstatus_interface_type_t type = netstatus_interface_get_type(details);
const netstatus_ip_status_t ipStatus = netstatus_interface_get_ip_status(details);
+ const int numIpAddresses = netstatus_interface_get_num_ip_addresses(details);
+ QList<QHostAddress> hostAddresses;
+ for (int a = 0; a < numIpAddresses; ++a) {
+ const char *ipAddress = netstatus_interface_get_ip_address(details, a);
+ QHostAddress hostAddress(QString::fromLatin1(ipAddress));
+ if (!hostAddress.isNull())
+ hostAddresses.append(hostAddress);
+ }
netstatus_free_interface_details(&details);
@@ -370,6 +379,11 @@ void QBBEngine::updateConfiguration(const char *interface)
changed = true;
}
+ if (ptr->hostAddresses != hostAddresses) {
+ ptr->hostAddresses = hostAddresses;
+ changed = true;
+ }
+
const netstatus_ip_status_t oldIpStatus = ptr->oldIpStatus;
ptr->oldIpStatus = ipStatus;