Skip to content

Commit 0df3aaa

Browse files
committed
Fix WiFiUdp not updating mapped v4 address
1 parent 1fb442d commit 0df3aaa

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

libraries/WiFi/src/WiFiGeneric.cpp

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1066,7 +1066,10 @@ esp_err_t WiFiGenericClass::_eventCallback(arduino_event_t *event)
10661066
clearStatusBits(STA_STARTED_BIT | STA_CONNECTED_BIT | STA_HAS_IP_BIT | STA_HAS_IP6_BIT | STA_HAS_IP6_GLOBAL_BIT);
10671067
} else if(event->event_id == ARDUINO_EVENT_WIFI_STA_CONNECTED) {
10681068
if (getStatusBits() & STA_WANT_IP6_BIT){
1069-
esp_netif_create_ip6_linklocal(get_esp_interface_netif(ESP_IF_WIFI_STA));
1069+
esp_err_t err = esp_netif_create_ip6_linklocal(get_esp_interface_netif(ESP_IF_WIFI_STA));
1070+
if(err != ESP_OK){
1071+
log_e("Failed to enable IPv6 Link Local on STA: [%d] %s", err, esp_err_to_name(err));
1072+
}
10701073
}
10711074
WiFiSTAClass::_setStatus(WL_IDLE_STATUS);
10721075
setStatusBits(STA_CONNECTED_BIT);
@@ -1127,7 +1130,10 @@ esp_err_t WiFiGenericClass::_eventCallback(arduino_event_t *event)
11271130
} else if(event->event_id == ARDUINO_EVENT_WIFI_AP_START) {
11281131
setStatusBits(AP_STARTED_BIT);
11291132
if (getStatusBits() & AP_WANT_IP6_BIT){
1130-
esp_netif_create_ip6_linklocal(get_esp_interface_netif(ESP_IF_WIFI_AP));
1133+
esp_err_t err = esp_netif_create_ip6_linklocal(get_esp_interface_netif(ESP_IF_WIFI_AP));
1134+
if(err != ESP_OK){
1135+
log_e("Failed to enable IPv6 Link Local on AP: [%d] %s", err, esp_err_to_name(err));
1136+
}
11311137
}
11321138
} else if(event->event_id == ARDUINO_EVENT_WIFI_AP_STOP) {
11331139
clearStatusBits(AP_STARTED_BIT | AP_HAS_CLIENT_BIT);
@@ -1145,7 +1151,10 @@ esp_err_t WiFiGenericClass::_eventCallback(arduino_event_t *event)
11451151
clearStatusBits(ETH_STARTED_BIT | ETH_CONNECTED_BIT | ETH_HAS_IP_BIT | ETH_HAS_IP6_BIT | ETH_HAS_IP6_GLOBAL_BIT);
11461152
} else if(event->event_id == ARDUINO_EVENT_ETH_CONNECTED) {
11471153
if (getStatusBits() & ETH_WANT_IP6_BIT){
1148-
esp_netif_create_ip6_linklocal(get_esp_interface_netif(ESP_IF_ETH));
1154+
esp_err_t err = esp_netif_create_ip6_linklocal(get_esp_interface_netif(ESP_IF_ETH));
1155+
if(err != ESP_OK){
1156+
log_e("Failed to enable IPv6 Link Local on ETH: [%d] %s", err, esp_err_to_name(err));
1157+
}
11491158
}
11501159
setStatusBits(ETH_CONNECTED_BIT);
11511160
} else if(event->event_id == ARDUINO_EVENT_ETH_DISCONNECTED) {

libraries/WiFi/src/WiFiUdp.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,7 @@ int WiFiUDP::parsePacket(){
321321
if (remote_ip.type() == IPv6 && ip6_addr_isipv4mappedipv6(ip_2_ip6(&addr))) {
322322
unmap_ipv4_mapped_ipv6(ip_2_ip4(&addr), ip_2_ip6(&addr));
323323
IP_SET_TYPE_VAL(addr, IPADDR_TYPE_V4);
324+
remote_ip.from_ip_addr_t(&addr);
324325
}
325326
remote_port = ntohs(si_other.sin6_port);
326327
}

0 commit comments

Comments
 (0)