[erlang-questions] mod_esi should return 400 status for missing function

Paul Fisher pfisher@REDACTED
Fri May 9 20:38:29 CEST 2008


If a Module/Function request matching an erl_script_alias registration
does not exist as a function in the module registered, the current
implementation returns a "500 Internal Server Error", rather than a more
appropriate "400 Bad Request".

Here is a patch that does this:

--- inets/src/http_server/mod_esi.erl.orig      2008-05-09 13:09:07.000000000 -0500
+++ inets/src/http_server/mod_esi.erl   2008-05-09 13:13:52.000000000 -0500
@@ -287,6 +287,9 @@
 %% before anythig is sent back to the client.
 erl_scheme_webpage_whole(Module, Function, Env, Input, ModData) ->
     case (catch Module:Function(Env, Input)) of
+       {'EXIT',{undef, _}} ->
+           {proceed, [{status, {400, ModData#mod.request_uri, "Bad Request"}}
+                      | ModData#mod.data]};
        {'EXIT',Reason} ->
            {proceed, [{status, {500, none, Reason}} |
                       ModData#mod.data]};


-- 
paul




More information about the erlang-questions mailing list