diff --git a/src/shrpx_client_handler.cc b/src/shrpx_client_handler.cc index 66b88ffa..33b53c1b 100644 --- a/src/shrpx_client_handler.cc +++ b/src/shrpx_client_handler.cc @@ -1279,6 +1279,10 @@ ClientHandler::ReadBuf *ClientHandler::get_rb() { return &rb_; } void ClientHandler::signal_write() { conn_.wlimit.startw(); } void ClientHandler::signal_write_no_wait() { + // ev_feed_event works without starting watcher. But rate limiter + // requires active watcher. Without that, we might not send pending + // data. Also ClientHandler::write_tls requires it. + conn_.wlimit.startw(); ev_feed_event(conn_.loop, &conn_.wev, EV_WRITE); }