summaryrefslogtreecommitdiff
path: root/indra/llmessage/message.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/llmessage/message.cpp')
-rw-r--r--indra/llmessage/message.cpp26
1 files changed, 24 insertions, 2 deletions
diff --git a/indra/llmessage/message.cpp b/indra/llmessage/message.cpp
index 8ab12ce991..78af35bf65 100644
--- a/indra/llmessage/message.cpp
+++ b/indra/llmessage/message.cpp
@@ -923,6 +923,28 @@ LLSD LLMessageSystem::wrapReceivedTemplateData() const
}
}
+LLSD LLMessageSystem::wrapBuiltTemplateData() const
+{
+ LLSD result;
+ if (mLLSDMessageBuilder == mMessageBuilder)
+ {
+ result = getBuiltMessageLLSD();
+ }
+ else
+ {
+ U8 buffer[MAX_BUFFER_SIZE];
+ const U8 offset_to_data = 0;
+ U32 size = mTemplateMessageBuilder->buildMessage(
+ buffer, MAX_BUFFER_SIZE,
+ offset_to_data);
+ std::vector<U8> binary_data(buffer, buffer+size);
+ LLSD wrapped_data = LLSD::emptyMap();
+ wrapped_data["binary-template-data"] = binary_data;
+ result = wrapped_data;
+ }
+ return result;
+}
+
LLStoredMessagePtr LLMessageSystem::getReceivedMessage() const
{
const std::string& name = mMessageReader->getMessageName();
@@ -934,7 +956,7 @@ LLStoredMessagePtr LLMessageSystem::getReceivedMessage() const
LLStoredMessagePtr LLMessageSystem::getBuiltMessage() const
{
const std::string& name = mMessageBuilder->getMessageName();
- LLSD message = getBuiltMessageLLSD();
+ LLSD message = wrapBuiltTemplateData();
return LLStoredMessagePtr(new LLStoredMessage(name, message));
}
@@ -1131,7 +1153,7 @@ LLHTTPClient::ResponderPtr LLMessageSystem::createResponder(const std::string& n
return new LLFnPtrResponder(
NULL,
NULL,
- mMessageBuilder->getMessageName());
+ name);
}
}