I think you ran into the issue described on Github issues for WifiClient.
A user has loooked into this and found that the error message does not match the problem:
errno 11 (EAGAIN) happens when you go to read (via BSD recv function) bytes from a stream with MSG_DONTWAIT flag and there are no bytes to be read. The ESP error string "No more processes" is misleading. It's really "No data available, try again later." or maybe "No data to process".
It seems that there's no fix for the package yet as of today, but another user has posted a derived class that fixes the problem:
File wifiFix.h:
#pragma once class WiFiClientFixed : public WiFiClient { public: void flush() override; };File wifiFix.cpp:
#include <WiFi.h> #include <lwip/sockets.h> #include "wifiFix.h" #define WIFI_CLIENT_FLUSH_BUFFER_SIZE (1024) void WiFiClientFixed::flush() { int res; size_t a = available(), toRead = 0; 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 = read(buf, min(a, (size_t)WIFI_CLIENT_FLUSH_BUFFER_SIZE)); if (res < 0) { log_e("fail on fd %d, errno: %d, \"%s\"", fd(), errno, strerror(errno)); stop(); break; } a -= res; } free(buf); }File main.cpp:
#include "wifiFix.h" WiFiClient* wifi = new WiFiClientFixed();Finally, instead of http.begin(url);
http.begin(url);, use http.begin(*wifi, url);http.begin(*wifi, url);