net_lwip_webserver: renew an empty received frame handle_incoming_packet() hands tud_network_recv_cb() a size of 0 for a zero-length ECM transfer or an RNDIS packet that fails validation. The callback returned true without tud_network_recv_renew(), so the class did not renew on its behalf, OUT was never re-armed and the link stalled for good. Renew on every path that returns true.