Description
Issue: TCP socket used to receive 50 meg file download from a server stalls with receive wndo of zero.
Application code uses select() to wait for data to be received. Select has 20 sec timout associated with it to detect a stall or disconnect with server. Timeouts are counted and when a level is reached - the connection is closed for lack of communication.
The application fails about 40% of the time.
In all cases wireshark shows communication with server has stopped because the esp keeps sending the same ack with a wndo of zero. After the server receives 9 of these acks -- it stops trying to send.
Issue -- the select is not firing. The select is not returning with a timeout or with data.
This issue existed using ESP8266 RTOS SDK V2.0 and is what has driven me to V30 IDF version -- at least here I can attempt to resolve it.
Since I have not found any issue of this associated with lwip -- I suspect the issue is with the port to the ESP --- both in the V2 and V3 RTOS releases.
What has Espressif done in porting "select()" from lwip to the esp8266? What file/function would be the best to start looking at? Also -- since a timeout is not firing -- any thoughts on how an esp port would affect that also?
Thanks in advance for any help.