mirror of
https://github.com/simplex-chat/simplexmq.git
synced 2026-06-01 13:24:18 +00:00
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.
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user