Skip to content

Commit 5e159b1

Browse files
committed
Fix encryption context not set for batched messages
1 parent dcaf920 commit 5e159b1

File tree

4 files changed

+10
-3
lines changed

4 files changed

+10
-3
lines changed

lib/Commands.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -930,6 +930,7 @@ Message Commands::deSerializeSingleMessageInBatch(Message& batchedMessage, int32
930930
batchedMessage.impl_->metadata, payload, metadata,
931931
batchedMessage.impl_->topicName_);
932932
singleMessage.impl_->cnx_ = batchedMessage.impl_->cnx_;
933+
singleMessage.impl_->encryptionContext_ = batchedMessage.impl_->encryptionContext_;
933934

934935
return singleMessage;
935936
}

tests/BasicEndToEndTest.cc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1465,6 +1465,10 @@ TEST(BasicEndToEndTest, testRSAEncryption) {
14651465
expected << msgContent << msgNum;
14661466
ASSERT_EQ(expected.str(), msgReceived.getDataAsString());
14671467
ASSERT_EQ(ResultOk, consumer.acknowledge(msgReceived));
1468+
auto context = msgReceived.getEncryptionContext();
1469+
ASSERT_TRUE(context.has_value());
1470+
ASSERT_EQ(context.value()->keys().size(), 1);
1471+
ASSERT_EQ(context.value()->keys()[0].key, "client-rsa.pem");
14681472
}
14691473

14701474
ASSERT_EQ(ResultOk, consumer.unsubscribe());

tests/EncryptionTest.cc

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
#include "lib/CompressionCodec.h"
2828
#include "lib/MessageCrypto.h"
2929
#include "lib/SharedBuffer.h"
30-
#include "tests/PulsarFriend.h"
3130

3231
static std::string lookupUrl = "pulsar://localhost:6650";
3332

@@ -122,6 +121,11 @@ static void testDecryption(Client& client, const std::string& topic, bool decryp
122121
for (int i = 0; i < numMessageReceived; i++) {
123122
Message msg;
124123
ASSERT_EQ(ResultOk, consumer.receive(msg, 3000));
124+
if (i < numMessageReceived - 1) {
125+
ASSERT_TRUE(msg.getEncryptionContext().has_value());
126+
} else {
127+
ASSERT_FALSE(msg.getEncryptionContext().has_value());
128+
}
125129
for (auto&& value : decryptValue(static_cast<const char*>(msg.getData()), msg.getLength(),
126130
msg.getEncryptionContext())) {
127131
values.emplace_back(value);

tests/PulsarFriend.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -217,8 +217,6 @@ class PulsarFriend {
217217
return waitUntil(std::chrono::seconds(3),
218218
[producerImpl] { return !producerImpl->getCnx().expired(); });
219219
}
220-
221-
static auto getMessageImplPtr(const Message& message) { return message.impl_; }
222220
};
223221
} // namespace pulsar
224222

0 commit comments

Comments
 (0)