Description
Current, I use WASM to modify request/response body: a
- Assume the orignal message body:
{"name":"cliff"}
'content-length', '16' - in onRequestBody()
After modify, then the body size will be below 3 conditions: - the new body size == the original body size, Perfect
in server side, got {"name":"world"} - the new body size > the original body size, this is also Ok, my solution is to remove "Content-Length" unconditionally when calling onRequestHeader()
in server side, got {"name":"hello world"} - the new body size > the original body size
I Can't handle this case.
in server side, got {"name":"leo"}f"}, the additional ff is there
the ugly way is to set requestbody from<f"}>, then server side get <{"name":"leo"} >
then server side got extra 3 spaces.
Therefore, would you help provide one way to modify the "Content-Length" in onRequestBody/onResponseBody after modify the message body.
Below is code:
//std::string l_new_data("{"new_data":"new_data_value_add_by_cliff"}");
std::string l_new_data("{"new":"new"}");
size_t l_new_size = l_new_data.size();
WasmResult l_set_result = setBuffer(WasmBufferType::HttpRequestBody, 0, l_new_size, l_new_data, &l_new_size);
LOG_TRACE(std::string(HSSC) + std::string("set status=") + (l_set_result == WasmResult::Ok ? std::string("Ok"):std::string("Not_ok")));
LOG_TRACE(std::string(HSSC) + std::string("After setBuffer(") + l_new_data + std::string("), pReqBodyBuffSize=")
+ std::to_string(pReqBodyBuffSize) + std::string(" and newbuff size=") + std::to_string(l_new_size));
Notes: no matter which way below, it doesn't work
//addRequestHeader("Content-Length", std::to_string(l_new_size));
//removeRequestHeader("Content-Length");
thanks
Cliff