Skip to content

Commit 9f680df

Browse files
authored
Guard IPv6
1 parent b88aa54 commit 9f680df

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

libraries/WiFi/src/WiFiClient.cpp

+7-2
Original file line numberDiff line numberDiff line change
@@ -229,14 +229,17 @@ 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);
238239
tmpaddr->sin6_scope_id = ip.zone();
239-
} else {
240+
} else
241+
#endif
242+
{
240243
struct sockaddr_in *tmpaddr = (struct sockaddr_in *)&serveraddr;
241244
sockfd = socket(AF_INET, SOCK_STREAM, 0);
242245
tmpaddr->sin_family = AF_INET;
@@ -588,6 +591,7 @@ IPAddress WiFiClient::remoteIP(int fd) const
588591
return IPAddress((uint32_t)(s->sin_addr.s_addr));
589592
}
590593

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

0 commit comments

Comments
 (0)