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.