<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">2015-11-19 18:50 GMT+01:00 Andy Green <span dir="ltr"><<a href="mailto:andy@warmcat.com" target="_blank">andy@warmcat.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=""><br>
<br>
On 20 November 2015 01:29:37 GMT+08:00, "Charles Prévot" <<a href="mailto:prevot@cervval.com">prevot@cervval.com</a>> wrote:<br>
>Thanks for your answer.<br>
>I have another small problem, in the case of a POST request, is there a<br>
>way<br>
>to figure out the size of the body (other than relying on the<br>
>Content-Length header) during the LWS_CALLBACK_HTTP call ?<br>
<br>
</span>No... that is what Content-Length is for.  That's a http thing not an lws thing.<br>
<span class=""><br>
>Because currently, if the body of the POST request is empty, I have no<br>
>other callback called (no LWS_CALLBACK_HTTP_BODY_COMPLETION) so the<br>
>server<br>
>waits for a body that never arrives and the client won't have a<br>
>response.<br>
<br>
</span>Is there a Content-Length: 0 header coming in that case?<br></blockquote><div>Yes there is, so I can use it to solve my problem. But that means a bad browser (or a forged request) could mess with the server behaviour by sending an empty POST with no Content-Length header. I can live with that, but that could be a security issue (ie if allocating some memory for a response that will never be sent, a DoS might occur).<br><br></div><div>Thanks for your quick replies. <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<span class="HOEnZb"><font color="#888888"><br>
-Andy<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
>2015-11-19 17:18 GMT+01:00 Andy Green <<a href="mailto:andy@warmcat.com">andy@warmcat.com</a>>:<br>
><br>
>><br>
>><br>
>> On 19 November 2015 21:55:01 GMT+08:00, "Charles Prévot" <<br>
>> <a href="mailto:prevot@cervval.com">prevot@cervval.com</a>> wrote:<br>
>> >Hello,<br>
>> >I have a quick question regarding the return values of callback. I<br>
>get<br>
>> >that<br>
>> >return 0 will continue and return -1 will close the connection, but<br>
>in<br>
>> >test-server.c you also use return 1 (when building http headers). I<br>
>> >failed<br>
>> >to find any reference on that, is there a difference with returning<br>
>-1<br>
>> >?<br>
>><br>
>> For all the 'normal' callbacks the choice is just 0 = ok and nonzero<br>
>=<br>
>> die.  Originally <0 was die which is why -1 was popular.<br>
>><br>
>> >Also, the family of http_header functions are not documented either<br>
>so<br>
>> >I'm<br>
>> >not sure of the meaning of a non-zero return from their side...<br>
>><br>
>> These were introduced to hide whether the underlying connection is<br>
>using<br>
>> http2 or not.  Http2 deals with headers in a radically different,<br>
>> binary-coded way, with multiple different options for header encoding<br>
>> including huffman tables, and the codebook is dynamically updated<br>
>during<br>
>> the kept-alive connection lifetime.  In particular you can't just<br>
>slide<br>
>> from headers to content in one packet with http2 as you could with<br>
>http1.x.<br>
>><br>
>> Anyway for both http1.x and http2 connections, they will return<br>
>nonzero in<br>
>> the case your requested header couldn't fit in the buffer you gave<br>
>it.<br>
>><br>
>> -Andy<br>
>><br>
>> >Sincerely,<br>
>><br>
>><br>
<br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature"><div dir="ltr"><div><div><a href="http://www.cervval.com/private/logoColor128.png" target="_blank"><span></span></a><span><b style="color:rgb(102,102,102)">Charles Prévot<br></b></span></div><div dir="ltr"><img src="http://www.cervval.com/private/logoColor128.png"><span><div><span style="color:rgb(102,102,102)"><i style="font-size:x-small;font-weight:bold">02 90 26 21 10</i></span><br></div></span><div><font size="1"><font style="color:rgb(102,102,102)"><b><i><font face="arial, helvetica, sans-serif">CERVVAL </font></i></b></font><b style="color:rgb(102,102,102);font-family:arial,helvetica,sans-serif"><i>140 avenue Graham Bell - </i></b><b style="color:rgb(102,102,102);font-family:arial,helvetica,sans-serif"><i>29280 Plouzané</i></b></font></div><a href="http://www.cervval.com/private/logoColor128.png" target="_blank"></a></div></div></div></div>
</div></div>