In pn_messenger_put, the buffer is initialised to an array of 1024 bytes. It then tries to encode the message and if it won't fit, a PN_OVERFLOW error occurs (against the message). The buffer is then doubled in size and it retries encoding. However, the PN_OVERFLOW error is not cleared. This means that after pn_messenger_put returns successfully, calling pn_message_errno will report that a PN_OVERFLOW error occurred. The error message, unhelpfully, is "data error: (null)".