Commit graph

653 commits

Author SHA1 Message Date
Ivailo Monev
7cfaf11ad3 kio: implement HEAD method for KHTTP
kinda not worth it tho - neither browsers nor KIO use it actually, maybe
optimization for bots and web crawlers

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-27 20:29:45 +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
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
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
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
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
0f0db0c3a7 kio: show unqueued and detailed job error messages
some errors (such as KIO::ERR_SERVICE_NOT_AVAILABLE) are not handled in
KIO::rawErrorDetail() yet tho

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-23 04:09:49 +02:00
Ivailo Monev
9a2e49d59a kio: replace QVariant with QMap header inclusion in global header
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-23 02:33:29 +02:00
Ivailo Monev
ca7fc963e7 kio: simplify SimpleJob::slotMetaData()
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-23 01:54:25 +02:00
Ivailo Monev
96f7941236 kio: drop KIO::MetaData from and to QVariant conversion methods
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-23 00:59:47 +02:00
Ivailo Monev
5a270d4864 kio: initialize all KIO::SlaveBasePrivate members before connecting the slave
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-22 23:40:05 +02:00
Ivailo Monev
b2d0b1a955 kio: remove unused CMD_SLAVE_STATUS command
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-22 23:08:32 +02:00
Ivailo Monev
83eab16683 kio: remove unused CMD_SLAVE_CONNECT command
never dispatched

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-22 22:31:46 +02:00
Ivailo Monev
5fa0b7a569 kio: remove unused port-related definitions
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-22 22:26:07 +02:00
Ivailo Monev
b7e764dfcd kio: remove unimplemented KIO::SlaveBase::setLinkDest()
not even handled in KIO::SlaveBase::dispatch()

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-22 21:23:25 +02:00
Ivailo Monev
ab75b45d49 kio: move private KIO::Command enum to job_p header
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-22 20:46:09 +02:00
Ivailo Monev
5e86975733 kio: remove unused KIO::ERR_ABORTED enum
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-22 19:58:00 +02:00
Ivailo Monev
15933214f9 kio: remove unused KIO::ERR_UNSUPPORTED_PROTOCOL enum
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-22 19:51:10 +02:00
Ivailo Monev
0b881add5e kio: remove unused KIO::Job::detailedErrorStrings() and KIO::rawErrorDetail() methods argument
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-22 19:47:04 +02:00
Ivailo Monev
effc55e44f kio: remove unused KIO::Error enums
note that KIO::ERR_NEED_PASSWD was not handled at all

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-22 19:24:56 +02:00
Ivailo Monev
8fde788cd6 kio: zero-initialize the buffer in KIO::number()
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-22 18:40:22 +02:00
Ivailo Monev
7b6f2c92d8 kio: poppler metadata extractor optimization
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-21 19:10:17 +02:00
Ivailo Monev
75e5990125 kio: taglib metadata extractor optimization
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-21 18:59:23 +02:00
Ivailo Monev
212cc9717a kio: log KFileMetaInfo messages to the kio debug area
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-12-20 00:22:57 +02:00