@@ -843,7 +843,11 @@ bool AsyncClient::connect(ip_addr_t addr, uint16_t port) {
843
843
tcp_pcb *pcb;
844
844
{
845
845
tcp_core_guard tcg;
846
+ #if LWIP_IPV4 && LWIP_IPV6
846
847
pcb = tcp_new_ip_type (addr.type );
848
+ #else
849
+ pcb = tcp_new_ip_type (IPADDR_TYPE_V4);
850
+ #endif
847
851
if (!pcb) {
848
852
log_e (" pcb == NULL" );
849
853
return false ;
@@ -863,8 +867,12 @@ bool AsyncClient::connect(ip_addr_t addr, uint16_t port) {
863
867
bool AsyncClient::connect (const IPAddress &ip, uint16_t port) {
864
868
ip_addr_t addr;
865
869
#if ESP_IDF_VERSION_MAJOR < 5
870
+ #if LWIP_IPV4 && LWIP_IPV6
866
871
addr.u_addr .ip4 .addr = ip;
867
872
addr.type = IPADDR_TYPE_V4;
873
+ #else
874
+ addr.addr = ip;
875
+ #endif
868
876
#else
869
877
ip.to_ip_addr_t (&addr);
870
878
#endif
@@ -1349,19 +1357,33 @@ uint16_t AsyncClient::getLocalPort() const {
1349
1357
}
1350
1358
1351
1359
ip4_addr_t AsyncClient::getRemoteAddress4 () const {
1360
+ #if LWIP_IPV4 && LWIP_IPV6
1352
1361
if (_pcb && _pcb->remote_ip .type == IPADDR_TYPE_V4) {
1353
1362
return _pcb->remote_ip .u_addr .ip4 ;
1354
- } else {
1363
+ }
1364
+ #else
1365
+ if (_pcb) {
1366
+ return _pcb->remote_ip ;
1367
+ }
1368
+ #endif
1369
+ else {
1355
1370
ip4_addr_t nulladdr;
1356
1371
ip4_addr_set_zero (&nulladdr);
1357
1372
return nulladdr;
1358
1373
}
1359
1374
}
1360
1375
1361
1376
ip4_addr_t AsyncClient::getLocalAddress4 () const {
1377
+ #if LWIP_IPV4 && LWIP_IPV6
1362
1378
if (_pcb && _pcb->local_ip .type == IPADDR_TYPE_V4) {
1363
1379
return _pcb->local_ip .u_addr .ip4 ;
1364
- } else {
1380
+ }
1381
+ #else
1382
+ if (_pcb) {
1383
+ return _pcb->local_ip ;
1384
+ }
1385
+ #endif
1386
+ else {
1365
1387
ip4_addr_t nulladdr;
1366
1388
ip4_addr_set_zero (&nulladdr);
1367
1389
return nulladdr;
@@ -1492,24 +1514,34 @@ AsyncServer::AsyncServer(ip_addr_t addr, uint16_t port)
1492
1514
#ifdef ARDUINO
1493
1515
AsyncServer::AsyncServer (IPAddress addr, uint16_t port) : _port (port), _noDelay (false ), _pcb (0 ), _connect_cb (0 ), _connect_cb_arg (0 ) {
1494
1516
#if ESP_IDF_VERSION_MAJOR < 5
1517
+ #if LWIP_IPV4 && LWIP_IPV6
1495
1518
_addr.type = IPADDR_TYPE_V4;
1496
1519
_addr.u_addr .ip4 .addr = addr;
1520
+ #else
1521
+ _addr.addr = addr;
1522
+ #endif
1497
1523
#else
1498
1524
addr.to_ip_addr_t (&_addr);
1499
1525
#endif
1500
1526
}
1501
- #if ESP_IDF_VERSION_MAJOR < 5
1527
+ #if ESP_IDF_VERSION_MAJOR < 5 && __has_include(<IPv6Address.h>) && LWIP_IPV6
1502
1528
AsyncServer::AsyncServer (IPv6Address addr, uint16_t port) : _port (port), _noDelay (false ), _pcb (0 ), _connect_cb (0 ), _connect_cb_arg (0 ) {
1529
+ #if LWIP_IPV4 && LWIP_IPV6
1503
1530
_addr.type = IPADDR_TYPE_V6;
1531
+ #endif
1504
1532
auto ipaddr = static_cast <const uint32_t *>(addr);
1505
1533
_addr = IPADDR6_INIT (ipaddr[0 ], ipaddr[1 ], ipaddr[2 ], ipaddr[3 ]);
1506
1534
}
1507
1535
#endif
1508
1536
#endif
1509
1537
1510
1538
AsyncServer::AsyncServer (uint16_t port) : _port (port), _noDelay (false ), _pcb (0 ), _connect_cb (0 ), _connect_cb_arg (0 ) {
1539
+ #if LWIP_IPV4 && LWIP_IPV6
1511
1540
_addr.type = IPADDR_TYPE_ANY;
1512
1541
_addr.u_addr .ip4 .addr = INADDR_ANY;
1542
+ #else
1543
+ _addr.addr = IPADDR_TYPE_ANY;
1544
+ #endif
1513
1545
}
1514
1546
1515
1547
AsyncServer::~AsyncServer () {
@@ -1533,7 +1565,11 @@ void AsyncServer::begin() {
1533
1565
int8_t err;
1534
1566
{
1535
1567
tcp_core_guard tcg;
1568
+ #if LWIP_IPV4 && LWIP_IPV6
1536
1569
_pcb = tcp_new_ip_type (_addr.type );
1570
+ #else
1571
+ _pcb = tcp_new_ip_type (IPADDR_TYPE_V4);
1572
+ #endif
1537
1573
}
1538
1574
if (!_pcb) {
1539
1575
log_e (" _pcb == NULL" );
0 commit comments