]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
msg/async: decouple MessageHeaderFrame from SignedEncryptedFrame.
authorRadoslaw Zarzynski <rzarzyns@redhat.com>
Wed, 30 Jan 2019 20:27:17 +0000 (21:27 +0100)
committerRadoslaw Zarzynski <rzarzyns@redhat.com>
Thu, 21 Feb 2019 20:54:18 +0000 (21:54 +0100)
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
src/msg/async/ProtocolV2.cc

index 7254be2e8a87e95754a289933ddd53ded590d60b..e19ec4deabb27006f40775dd2c6e724bf2675050 100644 (file)
@@ -418,9 +418,19 @@ struct AckFrame : public SignedEncryptedFrame<AckFrame, uint64_t> {
 // Body is processed almost independently with the sole junction point
 // being the `extra_payload_len` passed to get_buffer().
 struct MessageHeaderFrame
-    : public SignedEncryptedFrame<MessageHeaderFrame, ceph_msg_header2> {
+    : public PayloadFrame<MessageHeaderFrame, ceph_msg_header2> {
   const ProtocolV2::Tag tag = ProtocolV2::Tag::MESSAGE;
-  using SignedEncryptedFrame::SignedEncryptedFrame;
+
+  MessageHeaderFrame(ProtocolV2 &protocol, const ceph_msg_header2 &msghdr)
+      : PayloadFrame<MessageHeaderFrame, ceph_msg_header2>(msghdr) {
+    protocol.authencrypt_payload(this->payload);
+  }
+
+  MessageHeaderFrame(ProtocolV2 &protocol, char *payload, uint32_t length)
+      : PayloadFrame<MessageHeaderFrame, ceph_msg_header2>() {
+    protocol.authdecrypt_payload(payload, length);
+    this->decode_frame(payload, length);
+  }
 
   inline ceph_msg_header2 &header() { return get_val<0>(); }
 };