2023-02-06 02:23:00 +01:00
|
|
|
#include <WiFi.h>
|
|
|
|
#include <lwip/sockets.h>
|
2023-02-08 02:25:12 +01:00
|
|
|
#include "wifiFix.h"
|
2023-02-06 02:23:00 +01:00
|
|
|
|
|
|
|
#define WIFI_CLIENT_FLUSH_BUFFER_SIZE (1024)
|
|
|
|
|
|
|
|
void WiFiClientFixed::flush() {
|
2023-02-08 16:42:47 +01:00
|
|
|
int res;
|
|
|
|
size_t a = available();
|
|
|
|
if (!a) {
|
|
|
|
return;//nothing to flush
|
|
|
|
}
|
|
|
|
auto *buf = (uint8_t *) malloc(WIFI_CLIENT_FLUSH_BUFFER_SIZE);
|
|
|
|
if (!buf) {
|
|
|
|
return;//memory error
|
|
|
|
}
|
|
|
|
while (a) {
|
|
|
|
// override broken WiFiClient flush method, ref https://github.com/espressif/arduino-esp32/issues/6129#issuecomment-1237417915
|
|
|
|
//res = recv(fd(), buf, toRead, MSG_DONTWAIT);
|
|
|
|
res = read(buf, a);
|
|
|
|
if (res < 0) {
|
|
|
|
log_e("fail on fd %d, errno: %d, \"%s\"", fd(), errno, strerror(errno));
|
|
|
|
stop();
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
a -= res;
|
|
|
|
}
|
|
|
|
free(buf);
|
|
|
|
}
|