diff options
| author | Per Larsson <[email protected]> | 2023-04-19 08:44:34 +0200 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-04-19 08:44:34 +0200 |
| commit | 045702915c4b63d232b99d86a1ee0b16642098c8 (patch) | |
| tree | b8487d22d36b1c2a03352c45b386c209b9bb0b27 /zenhttp/httpsys.cpp | |
| parent | make sure initialization of a new filecas dont remove the cas manifest file o... (diff) | |
| download | zen-045702915c4b63d232b99d86a1ee0b16642098c8.tar.xz zen-045702915c4b63d232b99d86a1ee0b16642098c8.zip | |
Support for HTTP range header (#245)
* Support for HTTP range header.
* Implement http range for HTTP sys.
* Validate range parameters.
---------
Co-authored-by: Stefan Boberg <[email protected]>
Diffstat (limited to 'zenhttp/httpsys.cpp')
| -rw-r--r-- | zenhttp/httpsys.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/zenhttp/httpsys.cpp b/zenhttp/httpsys.cpp index f6f8024ca..4b566905e 100644 --- a/zenhttp/httpsys.cpp +++ b/zenhttp/httpsys.cpp @@ -188,6 +188,7 @@ public: virtual void WriteResponse(HttpResponseCode ResponseCode, HttpContentType ContentType, std::span<IoBuffer> Blobs) override; virtual void WriteResponse(HttpResponseCode ResponseCode, HttpContentType ContentType, std::u8string_view ResponseString) override; virtual void WriteResponseAsync(std::function<void(HttpServerRequest&)>&& ContinuationHandler) override; + virtual bool TryGetRanges(HttpRanges& Ranges) override; using HttpServerRequest::WriteResponse; @@ -1408,6 +1409,15 @@ HttpSysServerRequest::WriteResponseAsync(std::function<void(HttpServerRequest&)> } } +bool +HttpSysServerRequest::TryGetRanges(HttpRanges& Ranges) +{ + HTTP_REQUEST* Req = m_HttpTx.HttpRequest(); + const HTTP_KNOWN_HEADER& RangeHeader = Req->Headers.KnownHeaders[HttpHeaderRange]; + + return TryParseHttpRangeHeader({RangeHeader.pRawValue, RangeHeader.RawValueLength}, Ranges); +} + ////////////////////////////////////////////////////////////////////////// InitialRequestHandler::InitialRequestHandler(HttpSysTransaction& InRequest) : HttpSysRequestHandler(InRequest) |