Skip to content

Commit 7a6d378

Browse files
authored
guard IPv6
1 parent 1bd1ef7 commit 7a6d378

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

libraries/WiFi/src/WiFiClient.cpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -229,13 +229,16 @@ int WiFiClient::connect(IPAddress ip, uint16_t port, int32_t timeout_ms)
229229
_timeout = timeout_ms;
230230
int sockfd = -1;
231231

232-
if (ip.type() == IPv6) {
232+
#if LWIP_IPV6
233+
if (ip.isV6()) {
233234
struct sockaddr_in6 *tmpaddr = (struct sockaddr_in6 *)&serveraddr;
234235
sockfd = socket(AF_INET6, SOCK_STREAM, 0);
235236
tmpaddr->sin6_family = AF_INET6;
236237
memcpy(tmpaddr->sin6_addr.un.u8_addr, &ip[0], 16);
237238
tmpaddr->sin6_port = htons(port);
238-
} else {
239+
} else
240+
#endif
241+
{
239242
struct sockaddr_in *tmpaddr = (struct sockaddr_in *)&serveraddr;
240243
sockfd = socket(AF_INET, SOCK_STREAM, 0);
241244
tmpaddr->sin_family = AF_INET;
@@ -587,6 +590,7 @@ IPAddress WiFiClient::remoteIP(int fd) const
587590
return IPAddress((uint32_t)(s->sin_addr.s_addr));
588591
}
589592

593+
#if LWIP_IPV6
590594
// IPv6, but it might be IPv4 mapped address
591595
if (((struct sockaddr*)&addr)->sa_family == AF_INET6) {
592596
struct sockaddr_in6 *saddr6 = (struct sockaddr_in6 *)&addr;
@@ -596,6 +600,7 @@ IPAddress WiFiClient::remoteIP(int fd) const
596600
return IPAddress(IPv6, (uint8_t*)(saddr6->sin6_addr.s6_addr));
597601
}
598602
}
603+
#endif
599604
log_e("WiFiClient::remoteIP Not AF_INET or AF_INET6?");
600605
return (IPAddress(0,0,0,0));
601606
}

0 commit comments

Comments
 (0)