mirror of
https://github.com/nghttp2/nghttp2.git
synced 2025-12-07 02:28:53 +08:00
Merge pull request #2452 from nghttp2/nghttpx-quic-read-rate
nghttpx: Implement rate limiting for incoming QUIC traffic
This commit is contained in:
@@ -325,6 +325,20 @@ int ClientHandler::read_quic(const UpstreamAddr *faddr,
|
|||||||
const Address &local_addr,
|
const Address &local_addr,
|
||||||
const ngtcp2_pkt_info &pi,
|
const ngtcp2_pkt_info &pi,
|
||||||
std::span<const uint8_t> data) {
|
std::span<const uint8_t> data) {
|
||||||
|
// Rate limiting is implemented by dropping an incoming packet.
|
||||||
|
auto &rlimit = conn_.rlimit;
|
||||||
|
|
||||||
|
if (rlimit.avail() < data.size()) {
|
||||||
|
if (LOG_ENABLED(INFO)) {
|
||||||
|
CLOG(INFO, this) << "Dropped QUIC packet of " << data.size()
|
||||||
|
<< " bytes due to rate limiting";
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
rlimit.drain(data.size());
|
||||||
|
|
||||||
auto upstream = static_cast<Http3Upstream *>(upstream_.get());
|
auto upstream = static_cast<Http3Upstream *>(upstream_.get());
|
||||||
|
|
||||||
return upstream->on_read(faddr, remote_addr, local_addr, pi, data);
|
return upstream->on_read(faddr, remote_addr, local_addr, pi, data);
|
||||||
|
|||||||
Reference in New Issue
Block a user