Fix a few more issues with rearming sockets Follow-up to cl/846426663. PiperOrigin-RevId: 846478112
diff --git a/quiche/quic/masque/masque_connection_pool.cc b/quiche/quic/masque/masque_connection_pool.cc index 33a94a2..a4df68a 100644 --- a/quiche/quic/masque/masque_connection_pool.cc +++ b/quiche/quic/masque/masque_connection_pool.cc
@@ -273,8 +273,9 @@ void MasqueConnectionPool::ConnectionState::OnSocketEvent( QuicEventLoop* event_loop, SocketFd fd, QuicSocketEventMask events) { - auto cleanup = absl::MakeCleanup([event_loop, fd]() { - if (!event_loop->SupportsEdgeTriggered()) { + auto cleanup = absl::MakeCleanup([this, event_loop, fd]() { + if (!event_loop->SupportsEdgeTriggered() && + (!connection_ || !connection_->aborted())) { if (!event_loop->RearmSocket( fd, kSocketEventReadable | kSocketEventWritable)) { QUICHE_LOG(FATAL) << "Failed to re-arm socket " << fd;
diff --git a/quiche/quic/masque/masque_h2_connection.cc b/quiche/quic/masque/masque_h2_connection.cc index ce3a9e7..6a6461d 100644 --- a/quiche/quic/masque/masque_h2_connection.cc +++ b/quiche/quic/masque/masque_h2_connection.cc
@@ -109,6 +109,7 @@ } if (ssl_read_ret == 0) { QUICHE_LOG(INFO) << ENDPOINT << "TLS read closed"; + Abort(); return false; } QUICHE_DVLOG(1) << ENDPOINT << "Read " << ssl_read_ret << " bytes from TLS";
diff --git a/quiche/quic/masque/masque_tcp_server_bin.cc b/quiche/quic/masque/masque_tcp_server_bin.cc index b8c872f..bffeff8 100644 --- a/quiche/quic/masque/masque_tcp_server_bin.cc +++ b/quiche/quic/masque/masque_tcp_server_bin.cc
@@ -319,8 +319,8 @@ // From QuicSocketEventListener. void OnSocketEvent(QuicEventLoop* event_loop, SocketFd fd, QuicSocketEventMask events) { - auto cleanup = absl::MakeCleanup([event_loop, fd]() { - if (!event_loop->SupportsEdgeTriggered()) { + auto cleanup = absl::MakeCleanup([this, event_loop, fd]() { + if (!event_loop->SupportsEdgeTriggered() && !connection_.aborted()) { if (!event_loop->RearmSocket( fd, kSocketEventReadable | kSocketEventWritable)) { QUICHE_LOG(FATAL) << "Failed to re-arm socket " << fd; @@ -477,12 +477,17 @@ } } - void OnSocketEvent(QuicEventLoop* /*event_loop*/, SocketFd fd, + void OnSocketEvent(QuicEventLoop* event_loop, SocketFd fd, QuicSocketEventMask events) override { if (fd != server_socket_ || ((events & kSocketEventReadable) == 0)) { return; } AcceptConnection(); + if (!event_loop->SupportsEdgeTriggered()) { + if (!event_loop->RearmSocket(server_socket_, kSocketEventReadable)) { + QUICHE_LOG(FATAL) << "Failed to re-arm socket " << server_socket_; + } + } } // From MasqueH2Connection::Visitor.