I was trying to sync a new node from an almost-synced node, and somehow it was ignoring the other node.
Some debugging traced the problem to: https://github.com/bitcoin/bitcoin/blob/master/src/main.cpp#L4307
I understand the rationale, of course, it makes no sense to share blocks if we’re at the beginning of the chain. But we define ‘initial block download’ as ‘hasn’t received a block in the last 24 hours’. So it is also on while catching up.
Nodes which are almost-synced could in very well partake in serving old blocks, or am I missing something?