Commit graph

98 commits

Author SHA1 Message Date
Chocobo1
aedd997604
Don't expire connection when there are data in buffer
For writing, this ensures expire handler won't be executed in a small
time window, that is after `m_socket->write()` and before
`QIODevice::bytesWritten()` signal.
For reading, this let the socket to have the chance to process the
received data instead of dropping it.

PR #15849.
2021-12-18 12:28:30 +08:00
Chocobo1
ad9d0608d4
Avoid needless string-bytes conversion
This saves a few microseconds.
2021-12-14 13:52:34 +08:00
Chocobo1
3c5688c6f6
Reserve enough buffer space according to response content size 2021-12-14 13:52:34 +08:00
Chocobo1
ece92a886a
Restart idle timer on sending network response 2021-12-14 13:52:33 +08:00
Chocobo1
d78b2a569f
Fix handling when Content-Length field is absent
Closes #15754.
PR #15757.
2021-11-21 11:48:49 +08:00
Vladimir Golovnev (Glassez)
399d3ad85a
Replace QStringRef with QStringView 2021-07-15 10:56:49 +03:00
Chocobo1
70d1cb86fd
Disable move constructor where it is sensible 2021-06-29 14:49:45 +08:00
HiFiPhile
f5315d9ba7
Add WebUI reverse proxy source IP resolution (#15047)
Co-authored-by: qix67
Co-authored-by: HiFiPhile <admin@hifiphile.com>
2021-06-23 09:01:36 +03:00
Vladimir Golovnev (Glassez)
97c7f3bc67
Raise minimum Qt version to 5.14 2021-06-03 08:56:41 +03:00
Chocobo1
e21f46d824
Avoid data duplication 2021-05-21 14:38:06 +08:00
FranciscoPombal
6152b83405 Use #pragma once instead of include guards 2020-12-12 19:41:32 +00:00
Vladimir Golovnev (Glassez)
c41df9ffbd
Improve coding style 2020-11-17 21:02:37 +03:00
FranciscoPombal
4bdf9eda41 Fix extra/missing trailing new lines in files 2020-10-28 14:20:18 +00:00
Andrei Stepanov
04306a544f
Fix typo in connection.cpp
limiation -> limitation
2020-10-20 11:10:51 +04:00
Chocobo1
2f1016494b
Specify UTF-8 charset when forming data from plain text
This suppresses a browser warning about unspecified character encoding
of an HTTP response.
2020-09-08 14:30:55 +08:00
FranciscoPombal
0fa7fca31e Fix truncation when parsing HTTP request query
Closes #13029.

Fixes an issue with truncation of a QByteArray at the first '\0' byte
when parsing HTTP request query strings.

Previously, the operands of the ternary expression were of
different types. Most likely this was leading to a conversion
of the result to some kind of '\0'-terminated string type somewhere
along the way, in turn causing its truncation at the first '\0' byte
once converted back to QByteArray.

For some reason this bug was only present on Windows (MSVC).
2020-06-23 11:45:30 +01:00
Chocobo1
be152f45c9
Define and use Http::HeaderMap type 2020-05-11 00:34:28 +08:00
Chocobo1
d57b9be706
Rename function 2020-05-10 02:53:32 +08:00
Chocobo1
74a2168bc1
Define and use a proper HTTP header structure 2020-05-10 02:53:11 +08:00
Chocobo1
6d167e9a28
Remove const from class variables
It prohibits copy construction, copy assignment and move semantics.
2020-04-29 21:32:34 +08:00
Chocobo1
d3d3f7dbb3
Add final specifier to classes
This allow compilers to generate more efficient code.
2020-04-17 13:18:40 +08:00
Chocobo1
7de8a4d6e0
Construct QString more efficiently 2020-03-25 12:00:11 +08:00
FranciscoPombal
7d24e1c063 WebAPI: fix matching uncategorized torrents
Closes #11748.
2020-03-22 03:49:06 +00:00
Chocobo1
8d0d8e4dcb
Improve embedded tracker
Now it conforms to BEPs more closely.
2019-08-21 18:05:50 +08:00
Chocobo1
b5b678c58f
Replace QString::split() by faster alternatives 2019-08-08 18:57:54 +08:00
Chocobo1
f4e7b8c6bf
Replace QMap with QHash 2019-08-05 09:51:39 +08:00
Chocobo1
4a90716843
Add override keyword to functions 2019-07-19 11:58:56 +08:00
thalieht
4370a7eb12 Forward declare in a few places 2019-06-04 17:48:55 +03:00
Chocobo1
ff707ea5af
Change splitToViews() return type to QVector 2019-05-19 12:06:18 +08:00
Chocobo1
c6f3da1097
Improve removeIf() to support set types
We can now replace QMutable*Iterator by removeIf() which usage is more consistent with other
algorithm functions.
2019-05-14 01:26:01 +08:00
Chocobo1
bd8d70bf60
Refactor HTTP query parsing 2019-05-09 12:41:30 +08:00
Chocobo1
a2a669572c
Use QSet for tracking server connections
We don't need to maintain order between connections so QSet would be more suitable.
2019-04-15 21:35:35 +08:00
Chocobo1
a35b6cc8dd
Remove closed connections immediately
Previously it relied on a timer to drop dead connections but that proved to
be too slow when there is an incoming burst of connections.

Fixes #10487.
2019-04-15 21:35:10 +08:00
Chocobo1
d86a984e25
Correctly handle '+' sign in x-www-form-urlencoded data
Fixes #10451.
2019-04-07 13:58:16 +08:00
Chocobo1
c657134344
Replace deprecated QSslSocket::setDefaultCiphers() 2019-02-28 12:01:36 +08:00
thalieht
70f1537d9f Add const to almost all remaining vars and arguments that qualify 2019-02-25 17:05:15 +02:00
thalieht
d8cbc9266a Use 'auto' to avoid duplicating the type name 2019-02-16 18:54:17 +02:00
Chocobo1
79d7ba8205
Fix wrong arg placeholder 2019-02-09 21:26:45 +08:00
Mike Tzou
c540e57f55
Merge pull request #10227 from Chocobo1/login
Prevent login credential appearing in URL
2019-02-07 13:16:24 +08:00
Chocobo1
6d29a3af60
Make use of std algorithms 2019-02-05 13:35:54 +08:00
Chocobo1
814eef1e56
Fix wrong arg placehoder 2019-02-01 13:38:14 +08:00
Chocobo1
5cdb3b6a2d
Load WebUI certificate & key from file path
This allow users to update certificate & key more easily, i.e. without the need to import them
into qbt.

Closes #6675, #7547, #8315, #8564.
2019-01-28 16:33:48 +08:00
Vladimir Golovnev (Glassez)
b0446380c6
Separate URL components before percent-decoding
Allow special characters in query string parameters.
Closes #9116.
2019-01-27 15:33:19 +03:00
Chocobo1
7fd30fa90f
Enforce referrer-policy in WebUI
This stops leaking private data to other websites via Referrer header.
2018-12-10 22:17:04 +08:00
thalieht
6b1d26d555 Convert all foreach() to range-based for() 2018-11-28 23:40:12 +02:00
thalieht
d668a4fe6d Fix coding style for various things 2018-11-28 23:37:35 +02:00
Chocobo1
050b78f378
Send Cache-Control header in WebUI responses
Tune the caching time to be shorter, in case there is a program
update.
Change the cacheability to private, as WebUI resources are not intended
to be cached at proxy.
For uncacheable responses, send out "no-store" explicitly to halt
browser caching.
2018-06-04 20:50:08 +08:00
Chocobo1
c22e6b4502
Cleanup header include order
Add missing header.
Cleanup license.
2018-05-31 22:56:25 +08:00
Vladimir Golovnev (Glassez)
90f09e7570
Properly fill UploadedFile::filename field
Closes #8928.
2018-05-16 20:13:55 +03:00
thalieht
20ca90800d Fix coding style 2018-05-09 17:06:22 +03:00