diff options
author | Peter Hartmann <phartmann@rim.com> | 2013-02-21 14:42:25 +0100 |
---|---|---|
committer | Peter Hartmann <phartmann@blackberry.com> | 2013-05-07 16:42:42 +0200 |
commit | 002ef1697057cf82ef36546e6037179ba7eaf6ab (patch) | |
tree | 26aea3b5304bf5a4f61661ca82329b736b40d8c3 | |
parent | cff0b9e8aa6a8f411138d0e11715a09e5fb5e94f (diff) | |
download | qt4-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.cpp | 14 |
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; |