From b6f551000f611d493e45261bab0fe431efcfcf9f Mon Sep 17 00:00:00 2001 From: sh <37271604+shumvgolove@users.noreply.github.com> Date: Mon, 18 May 2026 13:35:47 +0000 Subject: [PATCH 1/2] ntf server: concurrent APNS push via sendRequestDirect (#1780) The per-(srvHost, provider) worker shards added in #1779 still funnel all APNS sends through one HTTP2Client's reqQ, where a single process thread calls sendRequest serially - one in-flight HTTP/2 stream at a time, capping APNS throughput at 1/RTT. sendRequestDirect bypasses the queue and invokes sendReq directly from the calling worker, so concurrent workers open parallel HTTP/2 streams on the shared APNS connection and the multiplexing happens on the wire. --- src/Simplex/Messaging/Notifications/Server/Push/APNS.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Simplex/Messaging/Notifications/Server/Push/APNS.hs b/src/Simplex/Messaging/Notifications/Server/Push/APNS.hs index 47dc435c2..0657e5cec 100644 --- a/src/Simplex/Messaging/Notifications/Server/Push/APNS.hs +++ b/src/Simplex/Messaging/Notifications/Server/Push/APNS.hs @@ -346,7 +346,7 @@ apnsPushProviderClient c@APNSPushClient {nonceDrg, apnsCfg} tkn@NtfTknRec {token nonce <- atomically $ C.randomCbNonce nonceDrg apnsNtf <- liftEither $ first PPCryptoError $ apnsNotification tkn nonce (paddedNtfLength apnsCfg) pn req <- liftIO $ apnsRequest c tknStr apnsNtf - HTTP2Response {response, respBody = HTTP2Body {bodyHead}} <- liftHTTPS2 $ sendRequest http2 req Nothing + HTTP2Response {response, respBody = HTTP2Body {bodyHead}} <- liftHTTPS2 $ sendRequestDirect http2 req Nothing let status = H.responseStatus response reason' = maybe "" reason $ J.decodeStrict' bodyHead if status == Just N.ok200 From f03cec7a58ed13a39a52886888c74bcefdb64479 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Thu, 21 May 2026 09:10:25 +0100 Subject: [PATCH 2/2] 6.5.2.0 --- simplexmq.cabal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/simplexmq.cabal b/simplexmq.cabal index 66cd43b17..5fd0cdf8e 100644 --- a/simplexmq.cabal +++ b/simplexmq.cabal @@ -1,7 +1,7 @@ cabal-version: 1.12 name: simplexmq -version: 6.5.1.0 +version: 6.5.2.0 synopsis: SimpleXMQ message broker description: This package includes <./docs/Simplex-Messaging-Server.html server>, <./docs/Simplex-Messaging-Client.html client> and