daemon: tcp_recv() is not going to work for fragmented messages
If the encapsulated DNS message is not read in one TCP read, it is discarded.
Correct behaviour would be to buffer it and resume reading when more data is available.
This is not trivial at the moment as the wire buffers are reused for all incoming packets, but struct qr_task
might be used to buffer incoming data for TCP.
However there has to be a good timeout to avoid resource exhaustion and prune inactive sessions.
See io.c@tcp_recv.