Flush is broken for SoftwareSerial, WiFiClient TCP and UDP and other classes #4029
Labels
Library: Ethernet
The Ethernet Arduino library
Library: SoftwareSerial
The SoftwareSerial Arduino library
Library: Wifi
The Wifi Arduino library
Type: Bug
Milestone
Flush is broken for SoftwareSerial, WiFiClient TCP and UDP and other classes
They does not honor the update description for Flush in the stream class
the current docs for Flush() https://www.arduino.cc/en/Serial/Flush say
"Waits for the transmission of outgoing serial data to complete. (Prior to Arduino 1.0, this instead removed any buffered incoming serial data.)
flush() inherits from the Stream utility class."
However for WiFiClient::flush(), WiFiUDP::flush(), SoftwareSerial::flush(), EthernetUDP::flush()
the current code, as of V1.6.4, clears the RX buffer, which is unexpected and leads to loss of incoming data.
I found this while tracking down why my WiFi connection was losing incoming messages sometimes.
Some classes implementations of flush() do nothing so a simple fix would be to replace the non-complient methods with empty methods.
The text was updated successfully, but these errors were encountered: