In the current code, en/decoding of a block uses casts and memcpy to get from Payload to Buffer and vice versa. I.e. the whole payload is copied into a buffer including the header information. This buffer is then encoded via FEC and send. I think this makes the protocol implementation dependent, as not all implementations will use the same internal representation.
This merge request should fix this by encoding the Payload into the wire format as described by the protocol before encoding using FEC.