Commits
- Commit:
fe3fcc3a56d76b914c9673099634579c91897840- From:
- kirill <kirill@openbsd.org>
- Date:
relayd: strip Content-Length for chunked messages
RFC 9112 section 6.1 requires an intermediary that forwards a message
carrying Transfer-Encoding to remove any received Content-Length first.
relayd already parses the body as chunked in this case, but previously
left Content-Length in the header tree, so the backend could receive
both framing fields and choose a different message boundary.
When chunked framing is selected, remove Content-Length before header
emission; this preserves relayd's chunked body handling while avoiding
CL.TE ambiguity downstream.
Reproted by: Stuart Thomas
OK: rsaodwski@
- Commit:
ee2597096652830f488428a76fe8eb91c92ac82d- From:
- rsadowski <rsadowski@openbsd.org>
- Date:
relayd: add support for the MKCALENDAR HTTP method
relayd is missing this method from the WebDAV/CalDAV extensions. This causes
issues when using relayd as a reverse proxy in front of CalDAV servers like
Nextcloud.
OK kirill@
- Commit:
94c8a65e1db2bd36b1efb39bcb8ddb0634b49c8b- From:
- benno <benno@openbsd.org>
- Date:
Responses to HEAD requests must not have a message body (even though they have
a Content-Length header). HTTP RFC 7231 section 4.3.2.
found by niklas@, claudio@ agrees.
- Commit:
62ee3f1b862dfa38fbdf7019ed8fa4eef0a2824b- From:
- reyk <reyk@openbsd.org>
- Date:
Fix and tweak websocket upgrade handling.
- Don't expect the Connection header to equal Upgrade, it may include Upgrade
- Reshuffle the code to check the Upgrade/Connection headers in one place
Reported and tested by Rivo Nurges
OK and input from benno@
Cvs: ----------------------------------------------------------------------
- Commit:
c0f9bf60024c9ce0cf08a6387897ebc58e1685ef- From:
- benno <benno@openbsd.org>
- Date:
Support for rfc 6455 Websockets connection upgrade. Add a new protocol
option 'http { [no] websockets }' to allow such connections (default
is no). Original diff from Daniel Lamando (dan AT danopia DOT net),
option and header checks by me. suggestions and ok bluhm@ and earlier
diff claudio@
- Commit:
35266489b7ac83d64a5947cb5f33acf2417ed3f7- From:
- benno <benno@openbsd.org>
- Date:
rfc 7230 3.3.3 says: response with a status code of 1xx
(Informational) or 204 (No Content) MUST not have a Content-Length.
Add a check for that.
ok reyk@
- Commit:
7088e981650274b34701675bdfa3060d43fc5109- From:
- reyk <reyk@openbsd.org>
- Date:
Add support for common WebDAV methods; from httpd.
Found and tested by Michael Lechtermann
OK benno@
- Commit:
d6302b55a71cf3c1712b7083d5902597763ef231- From:
- reyk <reyk@openbsd.org>
- Date:
Use "compliant" header guards by avoiding the reserved '_' namespace.
Pointed out by Markus Elfring
OK mikeb@ millert@
- Commit:
30fbe0a547750a815da502e07568aa8b903be5b6- From:
- claudio <claudio@openbsd.org>
- Date:
Remove fields from struct that are not used. OK benno@
- Commit:
f8da6c5979dfff30f8f3536113fa219f3ea39be2- From:
- reyk <reyk@openbsd.org>
- Date:
Sync with httpd, including the following change from doug@:
"Sync with RFC 7230-7235 phrases and IANA registered status codes.
ok reyk@"
- Commit:
d082a818f2002548bbea8a61a7b9fea377d84920- From:
- reyk <reyk@openbsd.org>
- Date:
Sync file to be identical in relayd(8) and httpd(8).
- Commit:
fa8477176fd048c02ae0f6d4c8a1f4ce201d1ad6- From:
- reyk <reyk@openbsd.org>
- Date:
Move HTTP error codes into http.h.
ok benno@
- Commit:
2d9632eeb8db7b53ecc8d9a082c997a3f33ad938- From:
- reyk <reyk@openbsd.org>
- Date:
Simplify the code that handles the HTTP headers by using an RB tree
with associated lists instead of the complicated lookup table and
"others" list. This might add a little malloc overhead for common
headers but also fixes some issues like the handling of repeated
headers - for example, handling of multiple "Set-Cookie" headers.
ok bluhm@ (regress part)
ok benno@
- Commit:
69fde657f218939a972c0abb9eddfc5625c968b8- From:
- reyk <reyk@openbsd.org>
- Date:
Replace the protocol directives for HTTP with a new generic filtering
language. The grammar is inspired by pf and allows to write versatile
last-matching filter rules in protocol sections starting with the
"pass", "block" or "match" keywords. This work was started almost two
years ago and replaces large parts of relayd(8)'s HTTP and filtering
code. The initial version reimplements and extends HTTP filtering,
but will be improved to support generic TCP and other protocols later.
With some testing, feedback, and help from benno@ and andre@.
OK benno@
