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
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
Kelson
94c2ab4395
Add two OPDS related mime-types to compress for HTTP
2020-05-18 08:19:51 +02:00
Kelson
0f07cab920
Small HTTP header beautification
2020-05-17 20:19:19 +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
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
Veloman Yunkan
a8e78f27e1
Refactoring: extracted Response::create_mhd_response()
2020-04-29 18:22:15 +04:00
Veloman Yunkan
6c7ab6ff54
Refactoring: moved local variable declarations
2020-04-29 18:21:40 +04:00
Veloman Yunkan
659ee6ba71
Refactoring: extracted InternalServer::build_redirect()
2020-04-29 16:08:10 +04:00
Veloman Yunkan
83ee8dec15
Made InternalServer::get_default_response() const
2020-04-29 16:08:10 +04:00
Veloman Yunkan
87cbbed9e3
Refactoring: extracted is_compressible_mime_type()
2020-04-29 16:08:10 +04:00
Veloman Yunkan
a058520628
Refactoring: extracted get_mime_type()
2020-04-29 16:08:10 +04:00
Veloman Yunkan
1ef5ebfb52
Refactoring: extracted InternalServer::get_reader()
2020-04-29 16:08:10 +04:00
Veloman Yunkan
bbc06931ad
Refactoring: extracted get_book_name()
2020-04-29 16:08:10 +04:00
Veloman Yunkan
2d3bf9b981
Refactoring: extracted InternalServer::homepage_data()
...
Also typedef'ed kainjow::mustache::data as MustacheData
2020-04-29 16:08:10 +04:00
Veloman Yunkan
fd80f2a89f
Refactoring: extracted fullURL2LocalURL()
...
Also dropped RequestContex::valid_url
2020-04-29 16:08:10 +04:00
Veloman Yunkan
abb3dec700
Refactoring: extracted str2RequestMethod()
2020-04-29 16:08:10 +04:00
luddens
0586ef6d41
fix open external zim
...
Check if the parameter `pathToSave` is empty before use it otherwise the
book path is empty too, which causes crash on opening external zim files
2020-04-20 15:22:36 +02:00
Matthieu Gautier
9d8bf8ddcb
Create the dataDirectory before returning its path.
2020-04-15 08:24:55 +02:00
Matthieu Gautier
4c8aad0e68
Do not use std::fstream has it doesn't support wchar path.
...
This is surprising, but C++11 fstream doesn't have a constructor
that take wchar as path.
So, on windows, we cannot open a stream on a path containing non ascii
char. VC++ provide an extension for that, but it is not standard and
g++ mingwin doesn't provide it.
So move all our write/read tools function to the plain old c versions,
using _wopen to open wide path on windows.
2020-04-14 18:13:35 +02:00
Matthieu Gautier
eb6f0f710c
Correctly detetect the dataDir on windows.
...
We must use the wide version of the getenv to correctly handle the case
we have accents in the user directory.
This also change the default dataDirectory on windows from $APPDATA to
$APPDATA/kiwix.
2020-04-14 12:12:34 +02:00
Matthieu Gautier
cbf5bd57a8
Adapt to new libzim api.
...
It is not possible to create a iterator without argument anymore.
2020-04-13 16:06:17 +02:00