diff --git a/src/server/request_context.cpp b/src/server/request_context.cpp index 1d467669e..fb54ca9ef 100644 --- a/src/server/request_context.cpp +++ b/src/server/request_context.cpp @@ -104,7 +104,7 @@ RequestContext::RequestContext(struct MHD_Connection* connection, version(version), requestIndex(s_requestIndex++), acceptEncodingDeflate(false), - range_pair(0, -1) + byteRange_() { MHD_get_connection_values(connection, MHD_HEADER_KIND, &RequestContext::fill_header, this); MHD_get_connection_values(connection, MHD_GET_ARGUMENT_KIND, &RequestContext::fill_argument, this); @@ -115,7 +115,7 @@ RequestContext::RequestContext(struct MHD_Connection* connection, } catch (const std::out_of_range&) {} try { - range_pair = parse_byte_range(get_header(MHD_HTTP_HEADER_RANGE)); + byteRange_ = parse_byte_range(get_header(MHD_HTTP_HEADER_RANGE)); } catch (const std::out_of_range&) {} } @@ -199,11 +199,11 @@ bool RequestContext::is_valid_url() const { } bool RequestContext::has_range() const { - return range_pair.first <= range_pair.second; + return byteRange_.first() <= byteRange_.last(); } RequestContext::ByteRange RequestContext::get_range() const { - return range_pair; + return byteRange_; } template<> diff --git a/src/server/request_context.h b/src/server/request_context.h index 13744b7fb..100e2fa35 100644 --- a/src/server/request_context.h +++ b/src/server/request_context.h @@ -52,7 +52,18 @@ class IndexError: public std::runtime_error {}; class RequestContext { public: // types - typedef std::pair ByteRange; + class ByteRange { + public: // functions + ByteRange() : ByteRange(0, -1) {} + ByteRange(int64_t first, int64_t last) : first_(first), last_(last) {} + + int64_t first() const { return first_; } + int64_t last() const { return last_; } + + private: // data + int64_t first_; + int64_t last_; + }; public: // functions RequestContext(struct MHD_Connection* connection, @@ -95,7 +106,7 @@ class RequestContext { bool acceptEncodingDeflate; - ByteRange range_pair; + ByteRange byteRange_; std::map headers; std::map arguments; diff --git a/src/server/response.cpp b/src/server/response.cpp index 410e9ebb1..448753dc9 100644 --- a/src/server/response.cpp +++ b/src/server/response.cpp @@ -41,10 +41,10 @@ bool is_compressible_mime_type(const std::string& mimeType) int get_range_len(const kiwix::Entry& entry, RequestContext::ByteRange range) { - const int entrySize = entry.getSize(); - return range.second == -1 - ? entrySize - range.first - : std::min(range.second + 1, entrySize) - range.first; + const int64_t entrySize = entry.getSize(); + return range.last() == -1 + ? entrySize - range.first() + : std::min(range.last() + 1, entrySize) - range.first(); } } // unnamed namespace @@ -330,7 +330,7 @@ void Response::set_entry(const Entry& entry, const RequestContext& request) { set_compress(true); } else { const int range_len = get_range_len(entry, request.get_range()); - set_range_first(request.get_range().first); + set_range_first(request.get_range().first()); set_range_len(range_len); } }