[erlang-patches] Patch for packet_parser.c to Include HTTP Methods Defined in RFC 2518 / WebDAV

Jan Lehnardt jan@REDACTED
Sat Feb 14 14:17:28 CET 2009


On 13 Feb 2009, at 20:08, Sverker Eriksson wrote:

> Jan Lehnardt wrote:
>> [...]
>> CouchDB (and other implementors of HTTP extending standards) would
>> benefit from the inclusion of the methods in RFC 2518. While CouchDB
>> only needs COPY and MOVE (for now), adding the complete suite of
>> additional HTTP methods seems sensible. Please consider the patch
>> for inclusion into the next OTP release.
>>  --- a/erts/emulator/beam/packet_parser.c	2009-02-09  
>> 00:14:24.000000000  +0100
>> +++ b/erts/emulator/beam/packet_parser.c	2009-02-09  
>> 00:12:56.000000000  +0100
>> @@ -139,6 +139,13 @@
>>     "PUT",
>>     "DELETE",
>>     "TRACE",
>> +    "PROPFIND",
>> +    "PROPPATCH",
>> +    "MKCOL",
>> +    "COPY",
>> +    "MOVE",
>> +    "LOCK",
>> +    "UNLOCK",
>>      NULL
>
>
> What do you think about the risk of applications that may break  
> expecting any of these methods as strings and not as atoms?

Good point. I'm not aware of any Erlang WebDAV server
but I do not constantly monitor the application space and
I'm relatively new to Erlang (2 years now). I certainly have
no idea about internal applications that use the WebDAV
protocol or use any other non-standard HTTP extensions.

I found http://code.google.com/p/webdav4erlang/ which
doesn't have any code.

I'd argue that if nobody has stepped up to "fix" this problem,
as it is a relatively simple patch, this hasn't gotten a lot of
attention at all.

An inquiry on erlang-questions@ might be a good idea.

If really needed, it might be worth the time to make the
old or the new code optional. With say,

     inet:setopts(Socket, [{packet, http}]), % http + webdav, this patch
     inet:setopts(Socket, [{packet, http_strict}]), % RFC 2616 only,  
old behaviour

or

     inet:setopts(Socket, [{packet, http}]), % RFC 2616 only, old  
behaviour
     inet:setopts(Socket, [{packet, webdav}]), % RFC 2518, this patch

If at all, I'd go for the first option (the naming of the PacketType
atom is just a suggestion). Legacy  applications (the number
I believe to be in the single digits) can be fixed by either removing
their special handling of the non-standard methods or
using `http_strict`.

The second option is more defensive for legacy applications
and would require us to patch MochiWeb (and hope for acceptance).
I don't know how feasible or not this is.



Cheers
Jan
--




More information about the erlang-patches mailing list