diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,10 @@
 # Revision history for http3
 
+## 0.1.11
+
+* Do not take a closed connection for a QPACK stream error
+  [#57](https://github.com/kazu-yamamoto/http3/pull/57)
+
 ## 0.1.10
 
 These changes were made on main without PRs.
diff --git a/Network/HTTP3/Context.hs b/Network/HTTP3/Context.hs
--- a/Network/HTTP3/Context.hs
+++ b/Network/HTTP3/Context.hs
@@ -152,8 +152,11 @@
         | isAsyncException se = E.throwIO se
         | otherwise = return ()
     abortWith :: ApplicationProtocolError -> E.SomeException -> IO ()
+    -- A QUIC exception says the connection is over, not that the peer's
+    -- instructions were bad: passed on, as the control stream's are.
     abortWith aerr se
         | isAsyncException se = E.throwIO se
+        | isJust (E.fromException se :: Maybe QUICException) = E.throwIO se
         | otherwise = connectionError conn aerr
 
 isAsyncException :: E.Exception e => e -> Bool
diff --git a/http3.cabal b/http3.cabal
--- a/http3.cabal
+++ b/http3.cabal
@@ -1,6 +1,6 @@
 cabal-version:      2.4
 name:               http3
-version:            0.1.10
+version:            0.1.11
 license:            BSD-3-Clause
 license-file:       LICENSE
 maintainer:         Kazu Yamamoto <kazu@iij.ad.jp>
@@ -84,13 +84,13 @@
         http-semantics >= 0.4 && <0.5,
         http-types >=0.12 && <0.13,
         http2 >=5.4.10 && <5.5,
-        iproute >= 1.7 && < 1.8,
+        iproute >= 1.7 && < 1.9,
         network >=3.1,
         network-byte-order >=0.1.7 && <0.2,
         network-control >= 0.1.7 && <0.2,
         psqueues >=0.2 && <0.3,
         quic >= 0.3.20 && < 0.4,
-        sockaddr >=0.0.1 && <0.1,
+        sockaddr >=0.0.1 && <0.2,
         stm >=2.5 && <2.6,
         time-manager >= 0.5 && <0.6,
         utf8-string >=1.0 && <1.1
