handle-client-error ( error -- ) (original) (raw)
handle-client-error ( error -- )
Inputs
error | an error |
---|
Outputs
None
Word description
Handles an error that may have occurred during the processing of a request. The rules are: 1) if the error is caused by an empty request line, it is silenced because it is a redundant dummy request issued by certain browsers. 2) if the error is a request-error then it is logged and the client is served a 400 Bad Request. 3) all other errors are thrown upwards.
Definition
USING: accessors combinators.short-circuit continuations
http.server.requests http.server.responses kernel sequences ;
: handle-client-error ( error -- )
dup request-error? [
dup
{ [ bad-request-line? ] [ parse-error>> got>> empty? ] }
1&&
[ drop ] [ httpd-bad-request <400> write-response ] if
] [ rethrow ] if ;