/sigh
You should endeavor to follow Postel's law. In this case, that means (using
RFC2119 notation):
If you are creating a "headers" packet, you
must include a properly coded varint representing the number of transactions that are included in the packet. The number of transactions included
must be zero.
(The only valid encoding for zero is a single octet: 0x00. 0x05 is right out.)If you are reading a "headers" packet, you
must parse that field as a varint. You
should reject any packets that include a non-zero number of transactions. You
may disconnect the peer that sent it, and attempt to publicly shame the authors of that implementation.
Thanks, that matches how I would have expected it to be implemented myself. I'll submit an update to the wiki tonight to drop the uint8_t in favor of varint.