From 169e60b8bf37ced9decc52a718c874d7310937c2 Mon Sep 17 00:00:00 2001 From: david gauchard Date: Tue, 10 Apr 2018 21:41:43 +0200 Subject: [PATCH 1/3] fix connection reset by peer case where pcb is set to null in ClientContext::_error but not reported to WiFiClient --- libraries/ESP8266WiFi/src/WiFiClient.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/ESP8266WiFi/src/WiFiClient.cpp b/libraries/ESP8266WiFi/src/WiFiClient.cpp index fb3f2025f0..6be20c1dcb 100644 --- a/libraries/ESP8266WiFi/src/WiFiClient.cpp +++ b/libraries/ESP8266WiFi/src/WiFiClient.cpp @@ -280,7 +280,7 @@ void WiFiClient::stop() uint8_t WiFiClient::connected() { - if (!_client) + if (!_client || _client->state() == CLOSED) return 0; return _client->state() == ESTABLISHED || available(); From aace1a93562e4a8344f4ed624415068526634eaa Mon Sep 17 00:00:00 2001 From: david gauchard Date: Tue, 10 Apr 2018 21:42:37 +0200 Subject: [PATCH 2/3] ClientContext: rename functions *_sent to *_acked (:sent to :ack in debug) --- libraries/ESP8266WiFi/src/include/ClientContext.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/libraries/ESP8266WiFi/src/include/ClientContext.h b/libraries/ESP8266WiFi/src/include/ClientContext.h index 9a58beb94a..2b42aca630 100644 --- a/libraries/ESP8266WiFi/src/include/ClientContext.h +++ b/libraries/ESP8266WiFi/src/include/ClientContext.h @@ -40,7 +40,7 @@ class ClientContext tcp_setprio(pcb, TCP_PRIO_MIN); tcp_arg(pcb, this); tcp_recv(pcb, &_s_recv); - tcp_sent(pcb, &_s_sent); + tcp_sent(pcb, &_s_acked); tcp_err(pcb, &_s_error); tcp_poll(pcb, &_s_poll, 1); @@ -471,11 +471,11 @@ class ClientContext } } - err_t _sent(tcp_pcb* pcb, uint16_t len) + err_t _acked(tcp_pcb* pcb, uint16_t len) { (void) pcb; (void) len; - DEBUGV(":sent %d\r\n", len); + DEBUGV(":ack %d\r\n", len); _write_some_from_cb(); return ERR_OK; } @@ -571,9 +571,9 @@ class ClientContext return reinterpret_cast(arg)->_poll(tpcb); } - static err_t _s_sent(void *arg, struct tcp_pcb *tpcb, uint16_t len) + static err_t _s_acked(void *arg, struct tcp_pcb *tpcb, uint16_t len) { - return reinterpret_cast(arg)->_sent(tpcb, len); + return reinterpret_cast(arg)->_acked(tpcb, len); } static err_t _s_connected(void* arg, struct tcp_pcb *pcb, err_t err) From 139cab621ef6e1e03f52d7e76545c8a87b4df837 Mon Sep 17 00:00:00 2001 From: david gauchard Date: Tue, 10 Apr 2018 21:43:16 +0200 Subject: [PATCH 3/3] use nullptr instead of 0 --- libraries/ESP8266WiFi/src/include/ClientContext.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/ESP8266WiFi/src/include/ClientContext.h b/libraries/ESP8266WiFi/src/include/ClientContext.h index 2b42aca630..eb8a286d6d 100644 --- a/libraries/ESP8266WiFi/src/include/ClientContext.h +++ b/libraries/ESP8266WiFi/src/include/ClientContext.h @@ -58,7 +58,7 @@ class ClientContext tcp_err(_pcb, NULL); tcp_poll(_pcb, NULL, 0); tcp_abort(_pcb); - _pcb = 0; + _pcb = nullptr; } return ERR_ABRT; } @@ -79,7 +79,7 @@ class ClientContext tcp_abort(_pcb); err = ERR_ABRT; } - _pcb = 0; + _pcb = nullptr; } return err; } @@ -536,7 +536,7 @@ class ClientContext tcp_sent(_pcb, NULL); tcp_recv(_pcb, NULL); tcp_err(_pcb, NULL); - _pcb = NULL; + _pcb = nullptr; _notify_error(); }