diff --git a/CHANGELOG.md b/CHANGELOG.md index 200bf8916..4339314d0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,26 @@ +# 4.2.0 + +SMP agent and server: + +- reduce sender traffic in cases when queue quota is exceeded: + - server sends quota exceeded message to the recipient when sender receives ERR QUOTA. + - recipient sends QCONT message to the send once the queue is drained (via reply queue). + - sender retry delays are increased, reducing traffic, but sender instantly resumes delivery where QCONT is received. + +SMP server: + +- increase internal queue sizes. + +SMP agent: + +- deduplicate connection IDs in connect/disconnect responses. +- unit tests for Crypto.hs. +- fix connection switch to another queue: correctly set primary send queue. + +Notification server (v1.3.0): + +- check token status when sending verification notificaiton. + # 4.1.0 SMP agent and server: diff --git a/package.yaml b/package.yaml index 449179375..1946a5005 100644 --- a/package.yaml +++ b/package.yaml @@ -1,5 +1,5 @@ name: simplexmq -version: 4.1.0 +version: 4.2.0 synopsis: SimpleXMQ message broker description: | This package includes <./docs/Simplex-Messaging-Server.html server>, diff --git a/simplexmq.cabal b/simplexmq.cabal index e01dd0a15..a2c25d487 100644 --- a/simplexmq.cabal +++ b/simplexmq.cabal @@ -1,11 +1,11 @@ cabal-version: 1.12 --- This file has been generated from package.yaml by hpack version 0.34.4. +-- This file has been generated from package.yaml by hpack version 0.35.0. -- -- see: https://github.com/sol/hpack name: simplexmq -version: 4.1.0 +version: 4.2.0 synopsis: SimpleXMQ message broker description: This package includes <./docs/Simplex-Messaging-Server.html server>, <./docs/Simplex-Messaging-Client.html client> and @@ -152,9 +152,9 @@ library , x509 ==1.7.* , x509-store ==1.6.* , x509-validation ==1.6.* + default-language: Haskell2010 if flag(swift) cpp-options: -DswiftJSON - default-language: Haskell2010 executable ntf-server main-is: Main.hs @@ -214,9 +214,9 @@ executable ntf-server , x509 ==1.7.* , x509-store ==1.6.* , x509-validation ==1.6.* + default-language: Haskell2010 if flag(swift) cpp-options: -DswiftJSON - default-language: Haskell2010 executable smp-agent main-is: Main.hs @@ -276,9 +276,9 @@ executable smp-agent , x509 ==1.7.* , x509-store ==1.6.* , x509-validation ==1.6.* + default-language: Haskell2010 if flag(swift) cpp-options: -DswiftJSON - default-language: Haskell2010 executable smp-server main-is: Main.hs @@ -338,9 +338,9 @@ executable smp-server , x509 ==1.7.* , x509-store ==1.6.* , x509-validation ==1.6.* + default-language: Haskell2010 if flag(swift) cpp-options: -DswiftJSON - default-language: Haskell2010 test-suite smp-server-test type: exitcode-stdio-1.0 @@ -425,6 +425,6 @@ test-suite smp-server-test , x509 ==1.7.* , x509-store ==1.6.* , x509-validation ==1.6.* + default-language: Haskell2010 if flag(swift) cpp-options: -DswiftJSON - default-language: Haskell2010 diff --git a/src/Simplex/Messaging/Notifications/Server/Main.hs b/src/Simplex/Messaging/Notifications/Server/Main.hs index 15139ec90..ee0f4e279 100644 --- a/src/Simplex/Messaging/Notifications/Server/Main.hs +++ b/src/Simplex/Messaging/Notifications/Server/Main.hs @@ -27,6 +27,9 @@ import System.FilePath (combine) import System.IO (BufferMode (..), hSetBuffering, stderr, stdout) import Text.Read (readMaybe) +ntfServerVersion :: String +ntfServerVersion = "1.3.0" + ntfServerCLI :: FilePath -> FilePath -> IO () ntfServerCLI cfgPath logPath = getCliCommand' (cliCommandP cfgPath logPath iniFile) serverVersion >>= \case @@ -45,7 +48,7 @@ ntfServerCLI cfgPath logPath = putStrLn "Deleted configuration and log files" where iniFile = combine cfgPath "ntf-server.ini" - serverVersion = "SMP notifications server v1.2.0" + serverVersion = "SMP notifications server v" <> ntfServerVersion defaultServerPort = "443" executableName = "ntf-server" storeLogFilePath = combine logPath "ntf-server-store.log" diff --git a/src/Simplex/Messaging/Transport.hs b/src/Simplex/Messaging/Transport.hs index 826528d9f..8d67202b4 100644 --- a/src/Simplex/Messaging/Transport.hs +++ b/src/Simplex/Messaging/Transport.hs @@ -100,7 +100,7 @@ supportedSMPServerVRange :: VersionRange supportedSMPServerVRange = mkVersionRange 1 5 simplexMQVersion :: String -simplexMQVersion = "4.1.0" +simplexMQVersion = "4.2.0" -- * Transport connection class diff --git a/tests/CLITests.hs b/tests/CLITests.hs index 6111a10fd..e18cf1963 100644 --- a/tests/CLITests.hs +++ b/tests/CLITests.hs @@ -6,6 +6,7 @@ import Data.Ini (lookupValue, readIniFile) import Data.List (isPrefixOf) import Simplex.Messaging.Notifications.Server.Main import Simplex.Messaging.Server.Main +import Simplex.Messaging.Transport (simplexMQVersion) import Simplex.Messaging.Util (catchAll_) import System.Directory (doesFileExist) import System.Environment (withArgs) @@ -51,7 +52,7 @@ smpServerTest storeLog basicAuth = do lookupValue "INACTIVE_CLIENTS" "disconnect" ini `shouldBe` Right "off" doesFileExist (cfgPath <> "/ca.key") `shouldReturn` True r <- lines <$> capture_ (withArgs ["start"] $ (100000 `timeout` smpServerCLI cfgPath logPath) `catchAll_` pure (Just ())) - r `shouldContain` ["SMP server v4.1.0"] + r `shouldContain` ["SMP server v" <> simplexMQVersion] r `shouldContain` (if storeLog then ["Store log: " <> logPath <> "/smp-server-store.log"] else ["Store log disabled."]) r `shouldContain` ["Listening on port 5223 (TLS)..."] r `shouldContain` ["not expiring inactive clients"] @@ -71,7 +72,7 @@ ntfServerTest storeLog = do lookupValue "TRANSPORT" "websockets" ini `shouldBe` Right "off" doesFileExist (ntfCfgPath <> "/ca.key") `shouldReturn` True r <- lines <$> capture_ (withArgs ["start"] $ (100000 `timeout` ntfServerCLI ntfCfgPath ntfLogPath) `catchAll_` pure (Just ())) - r `shouldContain` ["SMP notifications server v1.2.0"] + r `shouldContain` ["SMP notifications server v" <> ntfServerVersion] r `shouldContain` (if storeLog then ["Store log: " <> ntfLogPath <> "/ntf-server-store.log"] else ["Store log disabled."]) r `shouldContain` ["Listening on port 443 (TLS)..."] capture_ (withStdin "Y" . withArgs ["delete"] $ ntfServerCLI ntfCfgPath ntfLogPath)