@@ -1349,10 +1349,11 @@ client
13491349 ms
13501350 clnt@ Client {clientId, ntfSubscriptions, ntfServiceSubscribed, serviceSubsCount = _todo', ntfServiceSubsCount, rcvQ, sndQ, clientTHParams = thParams'@ THandleParams {sessionId}, procThreads} = do
13511351 labelMyThread . B. unpack $ " client $" <> encode sessionId <> " commands"
1352- let clntServiceId = (\ THClientService {serviceId} -> serviceId) <$> (peerClientService =<< thAuth thParams')
1352+ let THandleParams {thVersion} = thParams'
1353+ clntServiceId = (\ THClientService {serviceId} -> serviceId) <$> (peerClientService =<< thAuth thParams')
13531354 process t acc@ (rs, msgs) =
13541355 (maybe acc (\ (! r, ! msg_) -> (r : rs, maybe msgs (: msgs) msg_)))
1355- <$> processCommand clntServiceId t
1356+ <$> processCommand clntServiceId thVersion t
13561357 forever $
13571358 atomically (readTBQueue rcvQ)
13581359 >>= foldrM process ([] , [] )
@@ -1438,8 +1439,8 @@ client
14381439 mkIncProxyStats ps psOwn own sel = do
14391440 incStat $ sel ps
14401441 when own $ incStat $ sel psOwn
1441- processCommand :: Maybe ServiceId -> VerifiedTransmission s -> M s (Maybe ResponseAndMessage )
1442- processCommand clntServiceId (q_, (corrId, entId, cmd)) = case cmd of
1442+ processCommand :: Maybe ServiceId -> VersionSMP -> VerifiedTransmission s -> M s (Maybe ResponseAndMessage )
1443+ processCommand clntServiceId clntVersion (q_, (corrId, entId, cmd)) = case cmd of
14431444 Cmd SProxiedClient command -> processProxiedCmd (corrId, entId, command)
14441445 Cmd SSender command -> case command of
14451446 SKEY k -> withQueue $ \ q qr -> checkMode QMMessaging qr $ secureQueue_ q k
@@ -1828,7 +1829,7 @@ client
18281829
18291830 sendMessage :: MsgFlags -> MsgBody -> StoreQueue s -> QueueRec -> M s (Transmission BrokerMsg )
18301831 sendMessage msgFlags msgBody q qr
1831- | B. length msgBody > maxMessageLength = do
1832+ | B. length msgBody > maxMessageLength clntVersion = do
18321833 stats <- asks serverStats
18331834 incStat $ msgSentLarge stats
18341835 pure $ err LARGE_MSG
@@ -1981,7 +1982,7 @@ client
19811982 -- rejectOrVerify filters allowed commands, no need to repeat it here.
19821983 -- INTERNAL is used because processCommand never returns Nothing for sender commands (could be extracted for better types).
19831984 -- `fst` removes empty message that is only returned for `SUB` command
1984- Right t''@ (_, (corrId', entId', _)) -> maybe (corrId', entId', ERR INTERNAL ) fst <$> lift (processCommand Nothing t'')
1985+ Right t''@ (_, (corrId', entId', _)) -> maybe (corrId', entId', ERR INTERNAL ) fst <$> lift (processCommand Nothing fwdVersion t'')
19851986 -- encode response
19861987 r' <- case batchTransmissions clntTHParams [Right (Nothing , encodeTransmission clntTHParams r)] of
19871988 [] -> throwE INTERNAL -- at least 1 item is guaranteed from NonEmpty/Right
0 commit comments