Commit graph

3804 commits

Author SHA1 Message Date
Ivailo Monev
ea22f815a4 kimgio: write mask from ico plugin
some browsers for example do not load ICO images without mask apparently,
the mask just makes the image bigger in (data) size tho - the actual image
data is the same (32-bit depth BGRA)

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-27 19:33:52 +02:00
Ivailo Monev
aaea32c10c kimgio: claim write support only if the format matches and the device is writable
for read capabilities either the format must match or the format header but
for writing the format must be exact match

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-27 19:10:39 +02:00
Ivailo Monev
45db837f12 kio: initialize KHTTPPrivate::m_filepool member
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-27 18:53:52 +02:00
Ivailo Monev
f5fa2f2fd6 kio: thread the sending of files from KHTTP
for small files it may be overkill but for large files it is a huge
difference

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-27 01:18:37 +02:00
Ivailo Monev
0806e846eb kio: insert Connection header from HTTPHeaders() function
required if not supported by the server, for reference:
https://www.rfc-editor.org/rfc/rfc9112#name-persistence

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-26 23:13:02 +02:00
Ivailo Monev
823c98360d kio: handle content exceptions in KHTTP
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-26 22:06:19 +02:00
Ivailo Monev
f6ef1e42f3 kio: insert Last-Modified header when serving files from KHTTP
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-26 21:49:11 +02:00
Ivailo Monev
b1522a35dd kio: update HTTP status codes from RFC 9110
for reference:
https://www.rfc-editor.org/rfc/rfc9110.html#name-changes-from-rfc-7231

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-26 20:51:41 +02:00
Ivailo Monev
9c3873613c kio: insert Accept-Ranges header from HTTPHeaders() function
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-26 20:26:04 +02:00
Ivailo Monev
20e8594122 kio: insert Allow header from HTTPHeaders() function
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-26 19:41:44 +02:00
Ivailo Monev
5c7bcd1be4 kio: remove now unused QMutex header inclusion in khttp source file
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-26 19:40:45 +02:00
Ivailo Monev
8fcd182e2f kio: const-ify the port argument of KHTTP::start()
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-26 16:35:34 +02:00
Ivailo Monev
a9c96f297b kio: multi-connection safe KHTTP server stop
bonus points for not using mutex

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-26 03:58:28 +02:00
Ivailo Monev
529ef6912b kio: mark the KHTTPPrivate reimplementation as final
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-26 03:21:22 +02:00
Ivailo Monev
4f01c0c369 kio: typo
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-26 03:20:52 +02:00
Ivailo Monev
9446f976e7 kio: thread-safe KHTTP server stop
due to QTcpServer deleting clients on close either polling for new
connection has to be done (which will slow down the server a lot) or the
server has to be mutex-locked on per-client basis

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-26 03:18:43 +02:00
Ivailo Monev
55432743c0 kutils: assume that KArchive::list() filtered the entries when recursing
the conditionals were there to maybe match with and without trailing slash
but KArchive::list() works correctly for the fomats that do not add
trailing slash to directories aswell

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-25 23:33:12 +02:00
Ivailo Monev
0cbc869f50 kio: convert the version to uppercase for the sake of comparison
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-25 21:30:17 +02:00
Ivailo Monev
496c1e3226 kio: send 505 on non-HTTP/1.1 version from KHTTP
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-25 21:29:09 +02:00
Ivailo Monev
362b80c063 kio: send 405 on non-GET method from KHTTP
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-25 21:16:37 +02:00
Ivailo Monev
8731dfa323 kio: add the HTTP status code to the content in HTTPStatusToContent() function
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-25 20:51:39 +02:00
Ivailo Monev
6b61bac251 kio: KHTTP optimization
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-25 20:33:55 +02:00
Ivailo Monev
907782ff6d kio: KHTTP::respond() documentation update
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-25 18:55:17 +02:00
Ivailo Monev
931a05dbb7 kio: do not assume server does not contain space characters in HTTPHeaders() function
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-25 18:44:18 +02:00
Ivailo Monev
046d5caaee kio: new KHTTP::setServerID() setter
because authentication is done before calling the virtual KHTTP::responed()
method which means that Server header set in the headers from it would have
no effect

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-25 18:33:02 +02:00
Ivailo Monev
11e4eacc8e kio: pass authentication requirement to KHTTPPrivate::writeResponse()
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-25 18:14:57 +02:00
Ivailo Monev
3dbe3173be kio: drop support for custom authentication message, de-duplicate code
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-25 18:05:47 +02:00
Ivailo Monev
9e0707ff8b kio: reject large client payloads in KHTTP
for reference:
https://datatracker.ietf.org/doc/html/rfc7230#section-9.3

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-25 17:46:39 +02:00
Ivailo Monev
27caa4c394 kdecore: update reference to KHTTP debug area
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-25 16:46:15 +02:00
Ivailo Monev
1f60123bd7 kutils: check if the entry is directory as fallback when recursing in KArchive::remove() and KArchive::extract()
for some formats (such as ISO 9660 images) the directories do not end with
trailing slash

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-25 06:44:59 +02:00
Ivailo Monev
dc5aa31eca kio: KHTTP dcoumentation update
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-25 06:26:41 +02:00
Ivailo Monev
d51e0ec201 kio: do not assume the authentication message is non-empty in KHTTP
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-25 06:19:21 +02:00
Ivailo Monev
59567864f0 kio: translate the error in KHTTP::setAuthenticate()
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-25 05:16:44 +02:00
Ivailo Monev
969ddd830f kutils: rewrite KHTTP and move it to kio library
same functionality but without extra dependencies and better throughput

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-25 04:59:18 +02:00
Ivailo Monev
0c2fa57bdd kutils: group structs and typedefs documentation
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-24 13:24:47 +02:00
Ivailo Monev
efa445c361 kutils: mark some KArchivePrivate methods as const
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-24 13:15:45 +02:00
Ivailo Monev
0bc98740e0 kutils: error string correction
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-24 13:13:14 +02:00
Ivailo Monev
5e4e0c83e2 kutils: minor KArchive documentation correction
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-24 13:03:20 +02:00
Ivailo Monev
c29fc4dca1 kutils: test KCompressor and KDecompressor with empty data
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-24 12:59:19 +02:00
Ivailo Monev
4c16e7c0d5 kutils: recursively remove/extract when paths contain directory
this also makes it match the behaviour of KArchive::add() which recurses
into directories and adds the files that the specified directory holds

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-24 01:56:21 +02:00
Ivailo Monev
7a4a048bdb cmake: do not install the WebP module
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-23 20:49:34 +02:00
Ivailo Monev
d4aaf51952 cmake: add FindLibmicrohttpd module to the list of modules that are not installed
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-23 20:47:09 +02:00
Ivailo Monev
58798988c1 kdeui: minor KApplication documentation correction
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-23 20:27:49 +02:00
Ivailo Monev
8c5d11fc77 kioslave: map CURLE_REMOTE_FILE_EXISTS and CURLE_COULDNT_RESOLVE_HOST to KIO errors
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-23 19:58:56 +02:00
Ivailo Monev
02c945a3ca kutils: plug file descriptor leak in case the output filepath is not a regular file
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-23 19:42:47 +02:00
Ivailo Monev
3f6c5931af kio: add typo to the possible causes for KIO::ERR_MALFORMED_URL
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-23 18:45:56 +02:00
Ivailo Monev
ee59c22250 kdeui: minor KApplicationPrivate::sessionConfigName() optimization
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-23 18:40:00 +02:00
Ivailo Monev
1365112606 kio: pass the caption to KMessageBox::detailedError() from KIO::JobUiDelegate::showErrorMessage()
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-23 18:39:41 +02:00
Ivailo Monev
8ab4b4bd40 kdeui: close only QMainWindow and derived classes from the KApplication quit handler
any widget should be parented to the main window (i.e. be a child of the
main window)

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-23 17:49:33 +02:00
Ivailo Monev
d5e9d695df kutils: do not stop the player from KMediaWidget destructor
the state is saved before terminating MPV and that may require the player
to be playing (not paused or stopped)

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-23 17:46:55 +02:00