mirror of
https://github.com/me-no-dev/AsyncTCP.git
synced 2025-08-14 01:54:29 +02:00
Use IPADDR6_INIT() macro to set connecting IPv6 address
If LwIP is built with LWIP_IPV6_SCOPES, there is a 'zone' member in struct ip6_addr which was not being initialized correctly, leading to routing failures. The tcp_connect() call would return ERR_RTE and we would completely fail to report that error. All the user would see is 'Connecting to MQTT...' over and over again.
This commit is contained in:
committed by
Mathieu Carbou
parent
49c7cc15d9
commit
95de78acbb
@@ -747,9 +747,8 @@ bool AsyncClient::connect(const IPAddress& ip, uint16_t port){
|
||||
|
||||
#if LWIP_IPV6 && ESP_IDF_VERSION_MAJOR < 5
|
||||
bool AsyncClient::connect(const IPv6Address& ip, uint16_t port){
|
||||
ip_addr_t addr;
|
||||
addr.type = IPADDR_TYPE_V6;
|
||||
memcpy(addr.u_addr.ip6.addr, static_cast<const uint32_t*>(ip), sizeof(uint32_t) * 4);
|
||||
auto ipaddr = static_cast<const uint32_t*>(ip);
|
||||
ip_addr_t addr = IPADDR6_INIT(ipaddr[0], ipaddr[1], ipaddr[2], ipaddr[3]);
|
||||
|
||||
return _connect(addr, port);
|
||||
}
|
||||
|
Reference in New Issue
Block a user