Unusual behaviour of first query in a pipeline of queries.
Summary
Bind does not treat the first query in a pipelined list of queries in the same way as the rest of the queries in the list.
BIND version used
Bind 9.16.9, 9.17.7
Steps to reproduce
Create a file with a limited number of well formed resolvable queries, preferably in sorted in alphanumeric order. Use as input to mdig targeting a Bind server with pipelining enabled.
mdig @10.0.0.237 +vc -f ttt.1
Working with a cold cache, replies normally do not get returned in same order as the list - this is the expected behaviour.
Add a query that is known to cause the server to time out in the middle of the list of queries.
mdig @10.0.0.237 +vc -f ttt.2
The behaviour is as above. The ServFail reply generated by the "time out" on the server is the last reply.
Move the known query to the head of the list of queries.
mdig @10.0.0.237 +vc -f ttt.3
A pause in the output indicates that the server is waiting for a resolution of the first query.
Also inspecting the client messages generated by Bind bear this out.