| 4310 | } |
| 4311 | |
| 4312 | inline std::pair<size_t, size_t> |
| 4313 | get_range_offset_and_length(const Request &req, size_t content_length, |
| 4314 | size_t index) { |
| 4315 | auto r = req.ranges[index]; |
| 4316 | |
| 4317 | if (r.first == -1 && r.second == -1) { |
| 4318 | return std::make_pair(0, content_length); |
| 4319 | } |
| 4320 | |
| 4321 | auto slen = static_cast<ssize_t>(content_length); |
| 4322 | |
| 4323 | if (r.first == -1) { |
| 4324 | r.first = (std::max)(static_cast<ssize_t>(0), slen - r.second); |
| 4325 | r.second = slen - 1; |
| 4326 | } |
| 4327 | |
| 4328 | if (r.second == -1) { r.second = slen - 1; } |
| 4329 | return std::make_pair(r.first, static_cast<size_t>(r.second - r.first) + 1); |
| 4330 | } |
| 4331 | |
| 4332 | inline std::string make_content_range_header_field(size_t offset, size_t length, |
| 4333 | size_t content_length) { |
no outgoing calls
no test coverage detected