Optimize QUIC write

This commit is contained in:
Tatsuhiro Tsujikawa 2019-11-20 23:40:51 +09:00
parent c591ab5e6f
commit a93eb8b8f5
2 changed files with 24 additions and 20 deletions

View File

@ -214,8 +214,7 @@ void readcb(struct ev_loop *loop, ev_io *w, int revents) {
delete client;
return;
}
writecb(loop, &client->wev, revents);
// client->disconnect() and client->fail() may be called
client->signal_write();
}
} // namespace

View File

@ -601,7 +601,9 @@ int Client::read_quic() {
sockaddr_union su;
socklen_t addrlen = sizeof(su);
int rv;
size_t pktcnt = 0;
for (;;) {
auto nread =
recvfrom(fd, buf.data(), buf.size(), MSG_DONTWAIT, &su.sa, &addrlen);
if (nread == -1) {
@ -622,14 +624,17 @@ int Client::read_quic() {
return -1;
}
if (worker->current_phase == Phase::MAIN_DURATION) {
worker->stats.bytes_total += nread;
if (pktcnt == 10) {
break;
}
}
return 0;
}
int Client::write_quic() {
ev_io_stop(worker->loop, &wev);
if (quic.close_requested) {
return -1;
}