Currently, in file src/core/transport/http/sender/http_client.c, when processing HTTP headers, we read the data 1 byte at a time. This is too inefficient and performance intensive, since each read means a read to the TCP/IP stack.
The proposal is to improve the stream utility support so that one can specify a minimum number of bytes to read. So that when a read comes down that is less than the minimum, we read the minimum into a stream buffer and then copy the requested read length into caller buffer. So next time stream is read, and there is data in the stream buffer, the data is returned without having to do a socket read.
We can probably extend this on the stream write-side as well.