Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion source/extensions/filters/http/lua/lua_filter.cc
Original file line number Diff line number Diff line change
Expand Up @@ -349,7 +349,8 @@ void StreamHandleWrapper::onSuccess(const Http::AsyncClient::Request&,

// TODO(mattklein123): Avoid double copy here.
if (response->body() != nullptr) {
lua_pushstring(coroutine_.luaState(), response->bodyAsString().c_str());
lua_pushlstring(coroutine_.luaState(), response->bodyAsString().data(),
response->body()->length());
} else {
lua_pushnil(coroutine_.luaState());
}
Expand Down
11 changes: 9 additions & 2 deletions test/extensions/filters/http/lua/lua_filter_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -790,7 +790,10 @@ TEST_F(LuaHttpFilterTest, HttpCall) {
for key, value in pairs(headers) do
request_handle:logTrace(key .. " " .. value)
end
request_handle:logTrace(string.len(body))
request_handle:logTrace(body)
request_handle:logTrace(string.byte(body, 5))
request_handle:logTrace(string.sub(body, 6, 8))
end
)EOF"};

Expand Down Expand Up @@ -828,9 +831,13 @@ TEST_F(LuaHttpFilterTest, HttpCall) {

Http::ResponseMessagePtr response_message(new Http::ResponseMessageImpl(
Http::ResponseHeaderMapPtr{new Http::TestResponseHeaderMapImpl{{":status", "200"}}}));
response_message->body() = std::make_unique<Buffer::OwnedImpl>("response");
const char response[8] = {'r', 'e', 's', 'p', '\0', 'n', 's', 'e'};
response_message->body() = std::make_unique<Buffer::OwnedImpl>(response, 8);
EXPECT_CALL(*filter_, scriptLog(spdlog::level::trace, StrEq(":status 200")));
EXPECT_CALL(*filter_, scriptLog(spdlog::level::trace, StrEq("response")));
EXPECT_CALL(*filter_, scriptLog(spdlog::level::trace, StrEq("8")));
EXPECT_CALL(*filter_, scriptLog(spdlog::level::trace, StrEq("resp")));
EXPECT_CALL(*filter_, scriptLog(spdlog::level::trace, StrEq("0")));
EXPECT_CALL(*filter_, scriptLog(spdlog::level::trace, StrEq("nse")));
EXPECT_CALL(decoder_callbacks_, continueDecoding());
callbacks->onBeforeFinalizeUpstreamSpan(child_span_, &response_message->headers());
callbacks->onSuccess(request, std::move(response_message));
Expand Down