....
хочу привлечь Вас к общему делу, по исправлению багов в SDK, если у Вас есть желание исправить эти баги.
Честно - этим некогда заниматься, т.к. нет никакой цели в этом - невозможно исправить неверный выбранный базовый алгоритм работы espconn.
Espconn меня не интересует - я её давно не использую из-за глючности и чрезмерно большому расходу памяти на свои дела и эти патчи делал только для устранения особой глючности ваших проектов.
Ими сейчас устранены ошибки связанные с потерей события disconnect с внешней стороны и закрытия соединения lwip-ом. Без этого, espconn "вечно закрывает" соединение по таймеру и такие соединения, закрытые с внешней стороны, часто висят вечно, расходуя ресурс таймеров и т.д. не вызывая callback disconnect или callback recv.
Особо часто проявляется, к примеру, когда сервер отослал данные и получатель закрыл соединение, выдав [FIN, ACK] (нормальный конец передачи данных от сервера клиенту в HTTP при указании "Connection: close"). Стек Lwip подтверждает конец соединения и закрывает сокет (pcb), а Espconn про это не знает (Espconn poll каждую секунду при этом на то соединение Lwip уже вызывает - его же уже нет!). Espconn имеет указатель на старый pcb и по следующим командам пользователя пытается дальше работать по нему (к примеру закрыть соединение по команде пользователя или что-то ещё), что и вызывает вечный цикл закрытия потерянного соединения у Espconn по таймеру (и ... закрытие новых соединений по совпавшему указателю в памяти стека lwip
). Теперь, после патча, он сразу вываливается с ошибкой -11 - нет соединения, уведомляя пользователя в процедуре callback recv о закрытии соединения.