diff --git a/libraries/ESP8266WiFi/src/WiFiUdp.cpp b/libraries/ESP8266WiFi/src/WiFiUdp.cpp index ecf3f858f..1a98f83b5 100644 --- a/libraries/ESP8266WiFi/src/WiFiUdp.cpp +++ b/libraries/ESP8266WiFi/src/WiFiUdp.cpp @@ -74,7 +74,7 @@ uint8_t WiFiUDP::begin(uint16_t port) return (_ctx->listen(addr, port)) ? 1 : 0; } -uint8_t WiFiUDP::beginMulticast(IPAddress multicast, uint16_t port) +uint8_t WiFiUDP::beginMulticast(IPAddress interfaceAddr, IPAddress multicast, uint16_t port) { if (_ctx) { @@ -84,7 +84,7 @@ uint8_t WiFiUDP::beginMulticast(IPAddress multicast, uint16_t port) ip_addr_t ifaddr; - ifaddr.addr = (uint32_t) WiFi.localIP(); + ifaddr.addr = (uint32_t) interfaceAddr; ip_addr_t multicast_addr; multicast_addr.addr = (uint32_t) multicast; diff --git a/libraries/ESP8266WiFi/src/WiFiUdp.h b/libraries/ESP8266WiFi/src/WiFiUdp.h index a5d5586d5..06b39d0fe 100644 --- a/libraries/ESP8266WiFi/src/WiFiUdp.h +++ b/libraries/ESP8266WiFi/src/WiFiUdp.h @@ -42,7 +42,7 @@ public: virtual uint8_t begin(uint16_t port); // initialize, start listening on specified port. Returns 1 if successful, 0 if there are no sockets available to use virtual void stop(); // Finish with the UDP socket - uint8_t beginMulticast(IPAddress multicast, uint16_t port); // connect to a multicast group and listen on the given port + uint8_t beginMulticast(IPAddress interfaceAddr, IPAddress multicast, uint16_t port); // connect to a multicast group and listen on the given port // Sending UDP packets diff --git a/libraries/ESP8266mDNS/ESP8266mDNS.cpp b/libraries/ESP8266mDNS/ESP8266mDNS.cpp index a4a9f3781..2206c92ac 100644 --- a/libraries/ESP8266mDNS/ESP8266mDNS.cpp +++ b/libraries/ESP8266mDNS/ESP8266mDNS.cpp @@ -149,7 +149,7 @@ bool MDNSResponder::begin(const char* domain, IPAddress addr, uint32_t ttlSecond // Open the MDNS socket if it isn't already open. if (!_mdnsConn) { - if (!_mdnsConn.beginMulticast(IPAddress(224, 0, 0, 251), 5353)) { + if (!_mdnsConn.beginMulticast(addr, IPAddress(224, 0, 0, 251), 5353)) { return false; } }