Skip to content

Commit aa4d665

Browse files
author
Guillaume Buisson
committed
fix multicast with several network interfaces
nitroshare#18 mckaymatthew@f7a1e88
1 parent 4e54bc8 commit aa4d665

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

src/src/provider.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ void ProviderPrivate::onMessageReceived(const Message &message)
183183
if (sendTxt) {
184184
reply.addRecord(txtRecord);
185185
}
186-
server->sendMessage(reply);
186+
server->sendMessageToAll(reply);
187187
}
188188
}
189189

src/src/server.cpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,13 @@ void Server::sendMessageToAll(const Message &message)
154154
{
155155
QByteArray packet;
156156
toPacket(message, packet);
157-
d->ipv4Socket.writeDatagram(packet, MdnsIpv4Address, MdnsPort);
158-
d->ipv6Socket.writeDatagram(packet, MdnsIpv6Address, MdnsPort);
157+
for (const QNetworkInterface& interface : QNetworkInterface::allInterfaces()) {
158+
if (interface.flags() & QNetworkInterface::CanMulticast) {
159+
d->ipv4Socket.setMulticastInterface(interface);
160+
d->ipv4Socket.writeDatagram(packet, MdnsIpv4Address, MdnsPort);
161+
162+
d->ipv6Socket.setMulticastInterface(interface);
163+
d->ipv6Socket.writeDatagram(packet, MdnsIpv6Address, MdnsPort);
164+
}
165+
}
159166
}

0 commit comments

Comments
 (0)