handle-client-error ( error -- ) (original) (raw)

handle-client-error ( error -- )

Vocabulary
http.server

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 ;

IN: http.server

: 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 ;