По-моему получилось немного заморочно. UDP удобно использовать когда не надо никаких подтверждений. Джойстики всякие, телеметрия. А ты стал сразу FTP сервер делать. Раз ты устанавливаешь соединение, это проще сделать через TCP. Все низкоуровневые заморочки будут обрабатываться на уровне стека, а ты только потоки шли да принимай.

Я немного ковырял сетевой стек из NOOS-SDK для esp8266, он на базе lwIP с хаками. Не знаю за твои ошибки, но не удивлюсь, если там чего-то не работает на уровне SDK. Вообще странно, как в принципе неплохо оно работает при том, какой там в коде фарш.