Help with reading response from upstream u->buffer

Hi there,

In my module which uses upstream to talk to a backend, i do the
following in the response processing method (u->process_header)

ngx_http_upstream_t * u = r->upstream;
size_t myResponseLength = (u->buffer.last - u->buffer.pos);
size_t origUpstreamResponseLength = (u->buffer.last -
std::string myResponseString ((u_char *) u->buffer.pos,

ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "u->length is %d

and Original Upstream response length is %d and myResponseLength is
%d", u->length, origUpstreamResponseLength, myResponseLength);



My actual response length from upstream is ~16kb, while i get
u->length printed as 0, Original upstream response length and
myResponseLength printed as 1448 bytes. I also see in nginx debug
logs, “Transfer-Encoding: chunked”. Is the difference in length
printed, because of this encoding? Is there a way to disable chunked
transfer, so that i can get the entire response in one go (into my
string), as shown in code? If not, what is the right method to read
the entire response from upstream buffer into a temporary string (so
that i can do further parsing)?


Maxim had once mentioned about checking out memcache module for an
example of non-buffered protocol handling, and i modeled my code
around it. Is the behavior below because of buffered protocol (http)?