From 3c7eaafeafd6d37b5f82d8d62bc0e57c64c2d203 Mon Sep 17 00:00:00 2001 From: Markus Sattler Date: Mon, 6 Apr 2015 18:55:21 +0200 Subject: [PATCH] force tcp close in error --- .../ESP8266WiFi/src/include/ClientContext.h | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/libraries/ESP8266WiFi/src/include/ClientContext.h b/libraries/ESP8266WiFi/src/include/ClientContext.h index 1dff59c16..ed7af4b0b 100644 --- a/libraries/ESP8266WiFi/src/include/ClientContext.h +++ b/libraries/ESP8266WiFi/src/include/ClientContext.h @@ -284,11 +284,24 @@ private: void _error(err_t err) { DEBUGV(":er %d\r\n", err); - _pcb = 0; - if (_size_sent && _send_waiting) - esp_schedule(); - } + if(_pcb) { + tcp_arg(_pcb, NULL); + tcp_sent(_pcb, NULL); + tcp_recv(_pcb, NULL); + tcp_err(_pcb, NULL); + err = tcp_close(_pcb); + if(err != ERR_OK) { + DEBUGV(":tc err %d\r\n", err); + tcp_abort(_pcb); + } + } + _pcb = 0; + + if(_size_sent && _send_waiting) { + esp_schedule(); + } + } err_t _poll(tcp_pcb* pcb) {