For very busy servers, the internal jobs queue where accepted
sockets are enqueued can grow without limit.
This is a problem for two reasons:
- queueing too much work causes the server to respond with huge latency,
resulting in repetead timeouts on the clients; it is definitely
better to reject the connection early, so that the client
receives the backpressure signal as soon as the queue is
becoming too large
- the jobs list can eventually cause an out of memory condition
* Fix: Query parameter including query delimiter ('?') not being parsed properly
* Add details::split function with and without m argument to allow split parameters with/without counter
* Revert changes in SplitTest.ParseQueryString
* Fix readability warnings
Did not fix readbility-qualified-auto, will do a separate pull request
* Revert changes where meaning is lost
* Revert some style changes
The exact circumstances when this false positive is triggered are quite
tricky to reproduce, but it happened reproducibly with g++ 13.1 and 13.2 in
a close-source SW I'm working on. The fix even improves performance by a
very tiny bit: There is no need to copy the std::smatch, having a const
reference is enough.
Just as a side note: -Warray-bounds seems to cause trouble in other
projects, too, so e.g. the Linux kernel has disabled since June 2022.
* ClientImpl: Connection=close header control moved from process_request to send_
* Connection=close header control moved from send_ to handle_request
* SSLClient::connect_with_proxy error handling improved
* to_string definition added for Error::ProxyConnection
* Comment improvement
---------
Co-authored-by: akinelden <akin.elden@gmail.com>