From e94d1e3eb1755eb6c7d28fc3f0621f37cdb50cab Mon Sep 17 00:00:00 2001 From: Jeroen88 Date: Fri, 29 Mar 2019 17:25:03 +0100 Subject: [PATCH 1/3] Minor bug fixes in Maximum Fragment Length Negotation example, mainly giving background processes some time in fetch() --- .../BearSSL_MaxFragmentLength.ino | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/libraries/ESP8266WiFi/examples/BearSSL_MaxFragmentLength/BearSSL_MaxFragmentLength.ino b/libraries/ESP8266WiFi/examples/BearSSL_MaxFragmentLength/BearSSL_MaxFragmentLength.ino index 19ca6b3f71..59078d1ed9 100644 --- a/libraries/ESP8266WiFi/examples/BearSSL_MaxFragmentLength/BearSSL_MaxFragmentLength.ino +++ b/libraries/ESP8266WiFi/examples/BearSSL_MaxFragmentLength/BearSSL_MaxFragmentLength.ino @@ -17,17 +17,22 @@ const char *pass = STAPSK; void fetch(BearSSL::WiFiClientSecure *client) { client->write("GET / HTTP/1.0\r\nHost: tls.mbed.org\r\nUser-Agent: ESP8266\r\n\r\n"); client->flush(); - uint32_t to = millis() + 5000; + uint32_t startMillis = millis(); do { char tmp[32]; - memset(tmp, 0, 32); +// memset(tmp, 0, 32); int rlen = client->read((uint8_t*)tmp, sizeof(tmp) - 1); yield(); if (rlen < 0) { break; } + if(rlen == 0) { + delay(10); // Give background processes some time + continue; + } + tmp[rlen] = '\0'; Serial.print(tmp); - } while (millis() < to); + } while (millis() - startMillis < 5000); client->stop(); Serial.printf("\n-------\n"); } @@ -73,11 +78,11 @@ int fetchMaxFragmentLength() { BearSSL::WiFiClientSecure client; client.setInsecure(); - bool mfln = client.probeMaxFragmentLength("tls.mbed.org", 443, 1024); + bool mfln = client.probeMaxFragmentLength("tls.mbed.org", 443, 512); Serial.printf("\nConnecting to https://tls.mbed.org\n"); Serial.printf("MFLN supported: %s\n", mfln ? "yes" : "no"); if (mfln) { - client.setBufferSizes(1024, 1024); + client.setBufferSizes(512, 512); } client.connect("tls.mbed.org", 443); if (client.connected()) { @@ -125,6 +130,6 @@ void loop() { yield(); Serial.printf("\n\n"); - Serial.printf("Default SSL: %d bytes used\n", a); - Serial.printf("1024 byte MFLN SSL: %d bytes used\n", b); + Serial.printf("Default SSL: %d bytes used\n", a); + Serial.printf("512 byte MFLN SSL: %d bytes used\n", b); } From f7276361ac7c1ccc43d5abf19d5fa90e56683d29 Mon Sep 17 00:00:00 2001 From: Jeroen88 Date: Fri, 29 Mar 2019 21:04:29 +0100 Subject: [PATCH 2/3] Minor layout changes to pass travis tests --- .../BearSSL_MaxFragmentLength/BearSSL_MaxFragmentLength.ino | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/ESP8266WiFi/examples/BearSSL_MaxFragmentLength/BearSSL_MaxFragmentLength.ino b/libraries/ESP8266WiFi/examples/BearSSL_MaxFragmentLength/BearSSL_MaxFragmentLength.ino index 59078d1ed9..8a6de042df 100644 --- a/libraries/ESP8266WiFi/examples/BearSSL_MaxFragmentLength/BearSSL_MaxFragmentLength.ino +++ b/libraries/ESP8266WiFi/examples/BearSSL_MaxFragmentLength/BearSSL_MaxFragmentLength.ino @@ -20,13 +20,13 @@ void fetch(BearSSL::WiFiClientSecure *client) { uint32_t startMillis = millis(); do { char tmp[32]; -// memset(tmp, 0, 32); + // memset(tmp, 0, 32); int rlen = client->read((uint8_t*)tmp, sizeof(tmp) - 1); yield(); if (rlen < 0) { break; } - if(rlen == 0) { + if (rlen == 0) { delay(10); // Give background processes some time continue; } From 532a5538dab6cf68e0ff0fb3530833528812c4a5 Mon Sep 17 00:00:00 2001 From: Jeroen88 Date: Mon, 1 Apr 2019 22:33:23 +0200 Subject: [PATCH 3/3] Use PolledTimeout for timeout --- .../BearSSL_MaxFragmentLength.ino | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/libraries/ESP8266WiFi/examples/BearSSL_MaxFragmentLength/BearSSL_MaxFragmentLength.ino b/libraries/ESP8266WiFi/examples/BearSSL_MaxFragmentLength/BearSSL_MaxFragmentLength.ino index 19ca6b3f71..f05210283b 100644 --- a/libraries/ESP8266WiFi/examples/BearSSL_MaxFragmentLength/BearSSL_MaxFragmentLength.ino +++ b/libraries/ESP8266WiFi/examples/BearSSL_MaxFragmentLength/BearSSL_MaxFragmentLength.ino @@ -5,6 +5,7 @@ // Released to the public domain #include +#include #ifndef STASSID #define STASSID "your-ssid" @@ -17,17 +18,22 @@ const char *pass = STAPSK; void fetch(BearSSL::WiFiClientSecure *client) { client->write("GET / HTTP/1.0\r\nHost: tls.mbed.org\r\nUser-Agent: ESP8266\r\n\r\n"); client->flush(); - uint32_t to = millis() + 5000; + using oneShot = esp8266::polledTimeout::oneShot; + oneShot timeout(5000); do { char tmp[32]; - memset(tmp, 0, 32); int rlen = client->read((uint8_t*)tmp, sizeof(tmp) - 1); yield(); if (rlen < 0) { break; } + if (rlen == 0) { + delay(10); // Give background processes some time + continue; + } + tmp[rlen] = '\0'; Serial.print(tmp); - } while (millis() < to); + } while (!timeout); client->stop(); Serial.printf("\n-------\n"); } @@ -73,11 +79,11 @@ int fetchMaxFragmentLength() { BearSSL::WiFiClientSecure client; client.setInsecure(); - bool mfln = client.probeMaxFragmentLength("tls.mbed.org", 443, 1024); + bool mfln = client.probeMaxFragmentLength("tls.mbed.org", 443, 512); Serial.printf("\nConnecting to https://tls.mbed.org\n"); Serial.printf("MFLN supported: %s\n", mfln ? "yes" : "no"); if (mfln) { - client.setBufferSizes(1024, 1024); + client.setBufferSizes(512, 512); } client.connect("tls.mbed.org", 443); if (client.connected()) { @@ -125,6 +131,6 @@ void loop() { yield(); Serial.printf("\n\n"); - Serial.printf("Default SSL: %d bytes used\n", a); - Serial.printf("1024 byte MFLN SSL: %d bytes used\n", b); + Serial.printf("Default SSL: %d bytes used\n", a); + Serial.printf("512 byte MFLN SSL: %d bytes used\n", b); }