summaryrefslogtreecommitdiffstats
path: root/src/shrpx_quic_listener.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/shrpx_quic_listener.cc')
-rw-r--r--src/shrpx_quic_listener.cc12
1 files changed, 5 insertions, 7 deletions
diff --git a/src/shrpx_quic_listener.cc b/src/shrpx_quic_listener.cc
index 681f605..cf15e2f 100644
--- a/src/shrpx_quic_listener.cc
+++ b/src/shrpx_quic_listener.cc
@@ -106,10 +106,10 @@ void QUICListener::on_read() {
gso_size = static_cast<size_t>(nread);
}
- auto data = buf.data();
+ auto data = std::span{std::begin(buf), static_cast<size_t>(nread)};
for (;;) {
- auto datalen = std::min(static_cast<size_t>(nread), gso_size);
+ auto datalen = std::min(data.size(), gso_size);
++pktcnt;
@@ -131,14 +131,12 @@ void QUICListener::on_read() {
remote_addr.len = msg.msg_namelen;
quic_conn_handler->handle_packet(faddr_, remote_addr, local_addr, pi,
- data, datalen);
+ {std::begin(data), datalen});
- nread -= datalen;
- if (nread == 0) {
+ data = data.subspan(datalen);
+ if (data.empty()) {
break;
}
-
- data += datalen;
}
}
}