From 76e322f2e7c726a489e7c5ee2c5e5aa350ee951e Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Tue, 26 Apr 2016 15:58:12 +0800 Subject: [PATCH 1/4] Fix handling of chunked transfer encoding (#1975) --- libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp b/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp index 3ce4c16de..28829742a 100644 --- a/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp +++ b/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp @@ -624,6 +624,13 @@ int HTTPClient::writeToStream(Stream * stream) break; } + // read trailing \r\n at the end of the chunk + char buf[2]; + auto trailing_seq_len = _tcp->readBytes((uint8_t*)buf, 2); + if (trailing_seq_len != 2 || buf[0] != '\r' || buf[1] != '\n') { + return returnError(HTTPC_ERROR_READ_TIMEOUT); + } + delay(0); } } else { From 334837533f4337929f7a8091261deed5561b2210 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Tue, 26 Apr 2016 16:00:46 +0800 Subject: [PATCH 2/4] Add missing virtual destructor in TransportTraits (#1944) --- libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp b/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp index 28829742a..2733e12e1 100644 --- a/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp +++ b/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp @@ -33,6 +33,10 @@ class TransportTraits { public: + virtual ~TransportTraits() + { + } + virtual std::unique_ptr create() { return std::unique_ptr(new WiFiClient()); From 33723a9b52a40ed10cdced4507dde63b42fa38ed Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Tue, 26 Apr 2016 16:02:07 +0800 Subject: [PATCH 3/4] Fix UdpContext::peek to return int (#1946) --- libraries/ESP8266WiFi/src/include/UdpContext.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/ESP8266WiFi/src/include/UdpContext.h b/libraries/ESP8266WiFi/src/include/UdpContext.h index f3b58f87e..c367492cd 100644 --- a/libraries/ESP8266WiFi/src/include/UdpContext.h +++ b/libraries/ESP8266WiFi/src/include/UdpContext.h @@ -213,7 +213,7 @@ public: return size; } - char peek() + int peek() { if (!_rx_buf || _rx_buf_offset == _rx_buf->len) return -1; From 234a8743c9533d1b12d7962802869fe68e83179f Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Tue, 26 Apr 2016 16:28:45 +0800 Subject: [PATCH 4/4] Fix NMI interrupt handler alignment as suggested at http://www.esp8266.com/viewtopic.php?f=6&t=4675&start=48#p46002 --- tools/sdk/ld/eagle.app.v6.common.ld | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/sdk/ld/eagle.app.v6.common.ld b/tools/sdk/ld/eagle.app.v6.common.ld index c731ece35..90d9fc18c 100644 --- a/tools/sdk/ld/eagle.app.v6.common.ld +++ b/tools/sdk/ld/eagle.app.v6.common.ld @@ -78,6 +78,8 @@ SECTIONS *(.sdata2.*) *(.gnu.linkonce.s2.*) *(.jcr) + . = ALIGN(4); + _Pri_3_HandlerAddress = ABSOLUTE(.); _data_end = ABSOLUTE(.); } >dram0_0_seg :dram0_0_phdr