Veloman Yunkan
6b43438b74
Fixed compilation error under native_dyn
...
MHD_HTTP_RANGE_NOT_SATISFIABLE is not defined in the older version of
libmicrohttpd (that is used under CI/Linux native_dyn).
2020-05-26 01:54:36 +04:00
Veloman Yunkan
7301bf89bb
Some refactoring of byte-range parsing
2020-05-26 01:50:29 +04:00
Veloman Yunkan
ff23b28e7c
Removed unnecessary qualifier
2020-05-26 01:41:37 +04:00
Veloman Yunkan
931e95f391
Invalid byte ranges result in 416 responses
2020-05-26 01:40:07 +04:00
Veloman Yunkan
f7571b5b69
Content-Range header is set only for partial content
2020-05-25 17:42:18 +04:00
Veloman Yunkan
801ad18a89
ByteRange::resolve()
2020-05-25 17:27:35 +04:00
Veloman Yunkan
67a347c0c4
Moved byte-range parsing to byte_range.cpp
2020-05-25 17:21:10 +04:00
Veloman Yunkan
693905eb68
Default constructed ByteRange is a full range
2020-05-25 17:17:56 +04:00
Veloman Yunkan
f3e79c6b4c
Introduced src/server/byte_range.cpp
2020-05-25 16:43:44 +04:00
Veloman Yunkan
52f207eaa6
Support for single-ended byte ranges
2020-05-25 16:37:01 +04:00
Veloman Yunkan
67294217a8
ByteRange::Kind
2020-05-25 16:23:44 +04:00
Veloman Yunkan
d111a40ce8
Response::m_byteRange
2020-05-23 20:35:22 +04:00
Veloman Yunkan
0c5bb3fcfe
Moved ByteRange to a header file of its own
2020-05-23 20:08:53 +04:00
Veloman Yunkan
3fba8c20a0
Converted RequestContext::ByteRange to a class
...
Also renamed the `range_pair` data member of `RequestContext` to `byteRange_`
2020-05-23 19:59:47 +04:00
Veloman Yunkan
54db6049b7
Byte-range parsing not exposed in the header file
2020-05-23 18:58:19 +04:00
Veloman Yunkan
81c38d6b2b
parse_byte_range() without side-effects
2020-05-23 18:53:16 +04:00
Veloman Yunkan
e6a86c02ae
Got rid of RequestContext::accept_range
2020-05-23 17:15:42 +04:00
Veloman Yunkan
a0f7f32570
Re-ordered function definitions
2020-05-23 17:11:26 +04:00
Veloman Yunkan
c39fce8839
RequestContext::parse_byte_range()
2020-05-23 17:09:51 +04:00
Veloman Yunkan
bd2d0bc489
Unit-test for valid single range requests
2020-05-22 17:39:00 +04:00
Veloman Yunkan
de37489c53
Range header starts with a unit spec
...
After this commit valid ranges of the form "bytes=firstbyte-lastbyte" should
be handled correctly.
2020-05-22 17:17:31 +04:00
Veloman Yunkan
2a35a86de6
Fixed the size value used creating a response
...
In case of a partial response the size of the response is different
from the served entry size.
2020-05-22 16:49:35 +04:00
Veloman Yunkan
0a30a77c08
Handling of out of bound byte ranges
2020-05-22 16:46:38 +04:00
Veloman Yunkan
1a99bacfe3
Byte ranges are inclusive
...
The second component of a byte range, if present, designates the
index of the last byte to be included in the partial response.
2020-05-22 16:30:43 +04:00
Matthieu Gautier
2bf35f1651
New version 9.2
2020-05-18 15:23:01 +02:00
Matthieu Gautier
48cc277468
Merge pull request #356 from kiwix/fix_test_httplib
2020-05-18 14:44:18 +02:00
Matthieu Gautier
d8498fd655
Do not build `server` test on windows.
...
On the appveyor CI, the link of the `server` test fails with
`libmicrohttpd`.
Do not build the test on windows to not break the CI.
2020-05-18 13:13:17 +02:00
Matthieu Gautier
7ec8e33b83
Fix include of `httplib.h` on windows.
...
On windows, `httplib.h` must be included before `windows.h`
We do not include directly `windows.h` in the test but it is included
indirectly by other headers.
Let's include httplib first.
2020-05-18 11:16:25 +02:00
Kelson
8eb2d0c2a1
Explain how to run automated tests
2020-05-18 08:37:51 +02:00
Kelson
5995cc276d
Merge pull request #355 from kiwix/more-often-http-compression
...
Add two OPDS related mime-types to compress for HTTP
2020-05-18 08:33:44 +02:00
Kelson
94c2ab4395
Add two OPDS related mime-types to compress for HTTP
2020-05-18 08:19:51 +02:00
Kelson
15179db945
Merge pull request #354 from kiwix/small-http-header-beautification
...
Small HTTP header beautification
2020-05-17 21:50:26 +02:00
Kelson
0f07cab920
Small HTTP header beautification
2020-05-17 20:19:19 +02:00
Kelson
4f8b397081
Merge pull request #352 from kiwix/small-compilation-error-fix
...
Fix small compilation error in tests
2020-05-17 18:37:53 +02:00
Kelson
2df74d9755
Fix small compilation error in tests
2020-05-17 16:47:21 +02:00
Matthieu Gautier
0b25492edc
Merge pull request #348 from kiwix/http_head_and_etag
2020-05-15 13:55:50 +02:00
Veloman Yunkan
5f0a9d0b08
Added a comment clarifying a non-obvious case
2020-05-15 15:17:04 +04:00
Veloman Yunkan
54f5dbbd35
Handling of If-None-Match conditional requests
2020-05-14 17:01:22 +04:00
Veloman Yunkan
95a5cde359
ETags are set in the response as needed
...
Also added server-unit tests related to ETags in the response.
2020-05-14 17:01:22 +04:00
Veloman Yunkan
3d08ef43f2
HEAD request is not rejected
...
libmicrohttpd handles HEAD requests by dropping the body of the response
(if any). Hence letting a HEAD request through into the code that
processes GET requests is safe.
Also added server unit-tests related to the handling of HEAD requests.
2020-05-14 17:01:22 +04:00
Matthieu Gautier
381ff186cb
Merge pull request #349 from kiwix/fix_python
2020-05-04 10:55:55 +02:00
Matthieu Gautier
e32fa28a6c
Use python3 instead of python.
...
`python` binary is not installed on all platform.
But `python3` is (because meson is python3).
And the script we launch is python3 so use the correct version.
2020-05-04 10:52:11 +02:00
Matthieu Gautier
1842e8f51c
Merge pull request #345 from kiwix/server_refactoring
2020-04-29 17:38:41 +02:00
Veloman Yunkan
bfa51c2d87
Refactoring: got rid of duplicate get_mime_type()
2020-04-29 18:33:25 +04:00
Veloman Yunkan
81e781133d
Refactoring: utilized is_compressible_mime_type()
2020-04-29 18:33:01 +04:00
Veloman Yunkan
9ec7757efe
Refactoring: smart Response::set_entry()
...
Response::set_entry() was upgraded from a simple setter to a method
performing certain business logic that was previously taken care of by
InternalServer::handle_content().
2020-04-29 18:22:15 +04:00
Veloman Yunkan
7bd7ec4937
Refactoring: preparing to move some code
2020-04-29 18:22:15 +04:00
Veloman Yunkan
14d8583c83
Refactoring in InternalServer::handle_content()
...
Deduplicated common code found in the two branches of the last
if(){}else{} statement in InternalServer::handle_content().
2020-04-29 18:22:15 +04:00
Veloman Yunkan
a004d96cd7
Refactoring: extracted get_range_len()
2020-04-29 18:22:15 +04:00
Veloman Yunkan
21c6de2f80
Refactoring: split Response::create_mhd_response()
...
The changes are easier to understand in ignore-white-space mode
(git diff -w, git show -w).
2020-04-29 18:22:15 +04:00