- Added proper cleanup for all 6 queues in etcp_connection_close():
* input_queue: drain ETCP_FRAGMENT with pkt_data
* output_queue: drain ETCP_FRAGMENT with pkt_data
* input_send_q: drain INFLIGHT_PACKET with pkt_data
* input_wait_ack: drain INFLIGHT_PACKET with pkt_data
* ack_q: drain ACK_PACKET
* recv_q: drain ETCP_FRAGMENT with pkt_data
- Each element is properly freed with memory_pool_free before queue_free
- Memory pools are destroyed after all elements returned
- Result: 0 bytes leaked (was 12,864 bytes)
- etcp.c: Added queue_resume_callback(q) in input_queue_cb to process all packets
from input_queue, not just the first one. This fixes packet loss when multiple
packets are queued.
- Added test_etcp_100_packets.c: Test that sends 100 packets with flow control
(max 5 packets in queue) to verify queue processing works correctly.