header.compat_version = header.version;
}
calc_front_crc();
+
+ // update envelope
+ header.front_len = get_payload().length();
+ header.middle_len = get_middle().length();
+ header.data_len = get_data().length();
+ calc_header_crc();
+
+ footer.flags = CEPH_MSG_FOOTER_COMPLETE;
+
if (datacrc) {
calc_data_crc();
}
}
#endif
-
- }
- else
+ } else {
footer.flags = (unsigned)footer.flags | CEPH_MSG_FOOTER_NOCRC;
+ }
}
void Message::dump(Formatter *f) const
int Pipe::write_message(Message *m)
{
- ceph_msg_header& header = m->get_header();
- ceph_msg_footer& footer = m->get_footer();
+ const ceph_msg_header& header = m->get_header();
+ const ceph_msg_footer& footer = m->get_footer();
int ret;
- // get envelope, buffers
- header.front_len = m->get_payload().length();
- header.middle_len = m->get_middle().length();
- header.data_len = m->get_data().length();
- footer.flags = CEPH_MSG_FOOTER_COMPLETE;
- m->calc_header_crc();
-
// Now that we have all the crcs calculated, handle the digital signature for the message, if the
// pipe has session security set up. Some session security options do not actually calculate and
// check the signature, but they should handle the calls to sign_message and check_signature. PLR