[erlang-questions] httpc streaming bodies of 404 responses

Shane Evans <>
Fri Jan 13 00:28:02 CET 2012


Hi,

This has been raised before:
http://erlang.org/pipermail/erlang-questions/2010-February/049267.html
But I didn't see any replies.

I am using the http options {sync, false} and {stream, self} with 
httpc:request/4. The documentation of stream says:

> Streams the body of a 200 or 206 response to the calling process or to 
> a file. When streaming to the calling process using the option self 
> the following stream messages will be sent to that process: {http, 
> {RequestId, stream_start, Headers}, {http, {RequestId, stream, 
> BinBodyPart}, {http, {RequestId, stream_end, Headers}.
However, when a server replies with a 404 status, I get a message of the form:
{request_id() ,  {status_line(), headers(), Body}}
as expected, but Body is empty (<<>>) and then the actual body of the response is sent as a stream message:
{http, {request_id(), stream, Body}}
note that there was no stream_start or stream_end messages.

This seems like a bug to me... but if you look at http_handler:stream, there is clearly a function clause doing exactly this when status is 404.  I guess my question is why? and would it be a good idea to either document this, or remove that function clause (in which case 404s would be handled as you'd expect)?

Thanks,

Shane




More information about the erlang-questions mailing list