diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # ChangeLog for warp
 
+## 3.3.29
+
+* Preparing coming "http2" v4.2.0.
+
 ## 3.3.28
 
 * Fix for the "-x509" flag
diff --git a/Network/Wai/Handler/Warp/HTTP2.hs b/Network/Wai/Handler/Warp/HTTP2.hs
--- a/Network/Wai/Handler/Warp/HTTP2.hs
+++ b/Network/Wai/Handler/Warp/HTTP2.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE BangPatterns #-}
 {-# LANGUAGE OverloadedStrings #-}
@@ -31,7 +32,7 @@
 ----------------------------------------------------------------
 
 http2 :: S.Settings -> InternalInfo -> Connection -> Transport -> Application -> SockAddr -> T.Handle -> ByteString -> IO ()
-http2 settings ii conn transport app origAddr th bs = do
+http2 settings ii conn transport app peersa th bs = do
     istatus <- newIORef False
     rawRecvN <- makeRecvN bs $ connRecv conn
     writeBuffer <- readIORef $ connWriteBuffer conn
@@ -51,10 +52,14 @@
           , confReadN             = recvN
           , confPositionReadMaker = pReadMaker ii
           , confTimeoutManager    = timeoutManager ii
+#if MIN_VERSION_http2(4,2,0)
+          , confMySockAddr        = connMySockAddr conn
+          , confPeerSockAddr      = peersa
+#endif
           }
     checkTLS
     setConnHTTP2 conn True
-    H2.run conf $ http2server settings ii transport origAddr app
+    H2.run conf $ http2server settings ii transport peersa app
   where
     checkTLS = case transport of
         TCP -> return () -- direct
diff --git a/Network/Wai/Handler/Warp/Run.hs b/Network/Wai/Handler/Warp/Run.hs
--- a/Network/Wai/Handler/Warp/Run.hs
+++ b/Network/Wai/Handler/Warp/Run.hs
@@ -15,7 +15,7 @@
 import Data.Streaming.Network (bindPortTCP)
 import Foreign.C.Error (Errno(..), eCONNABORTED)
 import GHC.IO.Exception (IOException(..), IOErrorType(..))
-import Network.Socket (Socket, close, withSocketsDo, SockAddr, setSocketOption, SocketOption(..))
+import Network.Socket (Socket, close, withSocketsDo, SockAddr, setSocketOption, SocketOption(..), getSocketName)
 #if MIN_VERSION_network(3,1,1)
 import Network.Socket (gracefulClose)
 #endif
@@ -60,6 +60,7 @@
     writeBuffer <- createWriteBuffer 16384
     writeBufferRef <- newIORef writeBuffer
     isH2 <- newIORef False -- HTTP/1.x
+    mysa <- getSocketName s
     return Connection {
         connSendMany = Sock.sendMany s
       , connSendAll = sendall
@@ -80,6 +81,7 @@
       , connRecvBuf = \_ _ -> return True -- obsoleted
       , connWriteBuffer = writeBufferRef
       , connHTTP2 = isH2
+      , connMySockAddr = mysa
       }
   where
     receive' sock pool = UnliftIO.handleIO handler $ receive sock pool
diff --git a/Network/Wai/Handler/Warp/Types.hs b/Network/Wai/Handler/Warp/Types.hs
--- a/Network/Wai/Handler/Warp/Types.hs
+++ b/Network/Wai/Handler/Warp/Types.hs
@@ -11,6 +11,7 @@
 #ifdef MIN_VERSION_crypton_x509
 import Data.X509
 #endif
+import Network.Socket (SockAddr)
 import Network.Socket.BufferPool
 import System.Posix.Types (Fd)
 import qualified System.TimeManager as T
@@ -125,6 +126,7 @@
     , connWriteBuffer :: IORef WriteBuffer
     -- | Is this connection HTTP/2?
     , connHTTP2       :: IORef Bool
+    , connMySockAddr  :: SockAddr
     }
 
 getConnHTTP2 :: Connection -> IO Bool
diff --git a/warp.cabal b/warp.cabal
--- a/warp.cabal
+++ b/warp.cabal
@@ -1,5 +1,5 @@
 Name:                warp
-Version:             3.3.28
+Version:             3.3.29
 Synopsis:            A fast, light-weight web server for WAI applications.
 License:             MIT
 License-file:        LICENSE
