diff --git a/Freebox.pluginspec.in b/Freebox.pluginspec.in index be264ba..1b202a8 100644 --- a/Freebox.pluginspec.in +++ b/Freebox.pluginspec.in @@ -1,4 +1,4 @@ - + Freebox SAS (C) Freebox 2014 LGPL-2.1 diff --git a/ssdp/ssdpclient.cc b/ssdp/ssdpclient.cc index 1663798..c459fa2 100644 --- a/ssdp/ssdpclient.cc +++ b/ssdp/ssdpclient.cc @@ -49,7 +49,9 @@ void Client::start(const QString &nt) foreach(QNetworkInterface iface, QNetworkInterface::allInterfaces()) { mListeners << new UdpListener(iface); - mSearches << new Search(iface, nt); + foreach(QHostAddress addr, iface.allAddresses()) { + mSearches << new Search(iface, addr, nt); + } } foreach(UdpListener *l, mListeners) { diff --git a/ssdp/ssdpsearch.cc b/ssdp/ssdpsearch.cc index d756d2b..24c5840 100644 --- a/ssdp/ssdpsearch.cc +++ b/ssdp/ssdpsearch.cc @@ -27,13 +27,14 @@ namespace Freebox { namespace Ssdp { Search::Search(const QNetworkInterface &iface, + const QHostAddress &addr, const QString &st, QObject *parent) : UdpSocket(parent), mIface(iface), mSt(st) { - if (!bind()) { + if (!bind(addr)) { qWarning() << "failed bind for SSDP search:" << errorString(); return; } diff --git a/ssdp/ssdpsearch.hh b/ssdp/ssdpsearch.hh index fe2155f..b332bdd 100644 --- a/ssdp/ssdpsearch.hh +++ b/ssdp/ssdpsearch.hh @@ -31,6 +31,7 @@ class Search : public UdpSocket { public: Search(const QNetworkInterface &iface, + const QHostAddress &addr, const QString &st, QObject *parent = 0);