mirror of
https://github.com/esp8266/Arduino.git
synced 2025-04-21 10:26:06 +03:00
Fix memory leak in WiFiClient
This commit is contained in:
parent
4b25ae86ea
commit
2328e07637
@ -73,7 +73,9 @@ public:
|
|||||||
void unref()
|
void unref()
|
||||||
{
|
{
|
||||||
DEBUGV("WC:ur %d\r\n", _refcnt);
|
DEBUGV("WC:ur %d\r\n", _refcnt);
|
||||||
if (--_refcnt == 0 && _pcb)
|
if (--_refcnt == 0)
|
||||||
|
{
|
||||||
|
if (_pcb)
|
||||||
{
|
{
|
||||||
tcp_arg(_pcb, NULL);
|
tcp_arg(_pcb, NULL);
|
||||||
tcp_sent(_pcb, NULL);
|
tcp_sent(_pcb, NULL);
|
||||||
@ -81,6 +83,7 @@ public:
|
|||||||
tcp_err(_pcb, NULL);
|
tcp_err(_pcb, NULL);
|
||||||
tcp_close(_pcb);
|
tcp_close(_pcb);
|
||||||
_pcb = 0;
|
_pcb = 0;
|
||||||
|
}
|
||||||
delete this;
|
delete this;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -152,17 +155,23 @@ private:
|
|||||||
tcp_sent(pcb, NULL);
|
tcp_sent(pcb, NULL);
|
||||||
tcp_recv(pcb, NULL);
|
tcp_recv(pcb, NULL);
|
||||||
tcp_err(pcb, NULL);
|
tcp_err(pcb, NULL);
|
||||||
tcp_close(pcb);
|
int error = tcp_close(pcb);
|
||||||
|
if (error != ERR_OK)
|
||||||
|
{
|
||||||
|
DEBUGV("WC:rcla\r\n");
|
||||||
|
tcp_abort(pcb);
|
||||||
|
_pcb = 0;
|
||||||
|
return ERR_ABRT;
|
||||||
|
}
|
||||||
_pcb = 0;
|
_pcb = 0;
|
||||||
return ERR_OK;
|
return ERR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
DEBUGV("WC:rcr\r\n");
|
|
||||||
size_t len = pb->len;
|
size_t len = pb->len;
|
||||||
|
DEBUGV("WC:rcr %d\r\n", len);
|
||||||
_rx_buf.write(reinterpret_cast<const char*>(pb->payload), pb->len);
|
_rx_buf.write(reinterpret_cast<const char*>(pb->payload), pb->len);
|
||||||
pbuf_free(pb);
|
|
||||||
|
|
||||||
tcp_recved(pcb, len);
|
tcp_recved(pcb, len);
|
||||||
|
pbuf_free(pb);
|
||||||
return ERR_OK;
|
return ERR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user