1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-04-19 23:22:16 +03:00

doc/faq: tcpCleanup (#4314)

This commit is contained in:
david gauchard 2018-02-07 13:09:25 +01:00 committed by Develo
parent bcbd5961c0
commit b15102ad28

View File

@ -88,3 +88,31 @@ This error may pop up after switching between
`stable <https://github.com/esp8266/Arduino#stable-version->`__ esp8266 `stable <https://github.com/esp8266/Arduino#stable-version->`__ esp8266
/ Arduino package installations, or after upgrading the package version / Arduino package installations, or after upgrading the package version
:doc:`Read more <a04-board-generic-is-unknown>`. :doc:`Read more <a04-board-generic-is-unknown>`.
How to clear TCP PCBs in time-wait state ?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This is needed with lwIP-v1.4, less needed with lwIP-v2 but timeout is still
too high.
Time-wait PCB state helps TCP not confusing two consecutive connections with the
same (s-ip,s-port,d-ip,d-port) when the first is already closed but still
having duplicate packets lost in internet arriving later during the second.
Artificially clearing them is a workaround to help saving precious heap.
The following lines are compatible with both lwIP versions:
.. code:: cpp
// no need for #include
struct tcp_pcb;
extern struct tcp_pcb* tcp_tw_pcbs;
extern "C" void tcp_abort (struct tcp_pcb* pcb);
void tcpCleanup (void) {
while (tcp_tw_pcbs)
tcp_abort(tcp_tw_pcbs);
}
Ref. `#1923 <https://github.com/esp8266/Arduino/issues/1923>`__