From 576c9bccfbe6718fe8fe409bc165000bd1554589 Mon Sep 17 00:00:00 2001
From: Conor Cleary <ccleary@openjdk.org>
Date: Tue, 31 Oct 2023 09:58:26 +0000
Subject: [PATCH] 8318492: Http2ClientImpl should attempt to close and remove
 connection in stop()

Reviewed-by: dfuchs, jpai
---
 .../classes/jdk/internal/net/http/Http2ClientImpl.java      | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/java.net.http/share/classes/jdk/internal/net/http/Http2ClientImpl.java b/src/java.net.http/share/classes/jdk/internal/net/http/Http2ClientImpl.java
index f77e1428f2c..50338f94c1d 100644
--- a/src/java.net.http/share/classes/jdk/internal/net/http/Http2ClientImpl.java
+++ b/src/java.net.http/share/classes/jdk/internal/net/http/Http2ClientImpl.java
@@ -228,11 +228,11 @@ class Http2ClientImpl {
             connectionPoolLock.unlock();
         }
         do {
-            connections.values().forEach(this::close);
+            connections.values().removeIf(this::close);
         } while (!connections.isEmpty());
     }
 
-    private void close(Http2Connection h2c) {
+    private boolean close(Http2Connection h2c) {
         // close all streams
         try { h2c.closeAllStreams(); } catch (Throwable t) {}
         // send GOAWAY
@@ -241,6 +241,8 @@ class Http2ClientImpl {
         try { h2c.shutdown(STOPPED); } catch (Throwable t) {}
         // double check and close any new streams
         try { h2c.closeAllStreams(); } catch (Throwable t) {}
+        // Allows for use of removeIf in stop()
+        return true;
     }
 
     HttpClientImpl client() {