These are ordered from first to last in accordance to the request’s pipeline.
Both HTTP errors and logged warnings/error are listed here.
Contents |
---|
1 Debugging |
2 Overriding HTTP errors |
3 IO errors |
3.1 Connecting |
3.2 Reverse proxy |
4 Not acceptable |
4.1 Byte range |
5 Not Found |
6 Illegal paths |
Debugging
The logged errors are useful. See the log crate for more info.
All HTTP errors originating from Kvarn contain a reason
header which contains more info about the issue.
If the error response isn’t overridden, it’s also contained in the body.
Overriding HTTP errors
Put the HTML file in errors/xxx.html
to return that in case of an error.
You can use Present extensions here, as with any other file.
The
errors/
part of the path mentioned above is customizable using thehost::Options
.
In the future, you should be able to control this through other extensions (e.g. prepare extensions).
IO errors
Any errors writing to the stream will result in a log error and an aborted connection.
Errors in reading the body is however handled the user.
Connecting
Errors on initial connection and reading errors will also abort the connection and log.
Reverse proxy
Erroneous responses and timeouts will result in 502
and 504
errors, respectively.
Not acceptable
If the request contains accept requirements which could not be fulfilled, a 406
is returned.
Byte range
The same goes for the built in byte ranges - if they’re out of bounds, a HTTP error is send back.
404 Not Found
If no file was found (or the FS option is disabled), and no prepare extension was found, a 404
is generated. This can in turn be modified by a package extension. That is however almost never the correct thing.
Illegal paths
Some paths are disallowed by Kvarn due to security reasons.
These include (though are not exclusive) ./
and //
.
This will return a 400
.