Inets 4.0 and HTTP/1.1 "100 Continue" responses

Ingela Anderton ingela@REDACTED
Fri Dec 3 11:18:11 CET 2004


Heinrich Venter wrote:
> It looks like I have managed to fix the problem with the 100 Continue
> response lines
Well not really! However I will fix it for the next open source release.

> The idea is that if the "100 Continue" response is recognised, the Body
> is re-parsed from scratch.  I am not sure if all the extra response
> handling in the parsing case is neccesary.
> I also don't know if the behavior of the header "expect=100-continue"
> will stil be correct.
I do not agree with this idea! When you receive a 100-continue
response the body should be sent if the request had a
expect:100-continue header and then we wait for the next response from
the server or if not we ignore this response and wait for the next
response.
 
> %%% RFC2616, Section 10.1.1
> %%% Note:
> %%% - Only act on the 100 status if the request included the
> %%%   "Expect:100-continue" header, otherwise just ignore this response.
> status_continue(Req = #http_request_h{expect="100-continue"}, Session)
> ->
>     {_, Body} = Req#request.content,
>     http_transport:send(Session#tcp_session.scheme, 
> 			Session#tcp_session.socket, Body),
>     {ok, continue};
> 
> status_continue(_Req, _Session) ->
>     error_logger:info_msg("Found Continue"),
>     {ok, continue}.
You are however right that this function did not have a correct return
value. In fact this could not ever have worked as intended as the first
argument is not of type http_request_h! (I think it might be an
unfortunate mistake made when evolving the the old unsupported
client). Alas testing is of the nature that it can always be improved!

-- 
/Ingela

Ericsson AB - OTP team









More information about the erlang-questions mailing list