on master help sign in
making 'cons' more robust.
commit0a4540810fd823d87aecff7cd7014da4c6ab49d5 authorKazu Yamamoto <kazu@iij.ad.jp> dateMon 3 Jul 2017, 16:43 (9 years ago) parent411da8c
1 file changed+3−1
tls-session-manager/Network/TLS/SessionManager.hs+3−1
tls-session-manager/Network/TLS/SessionManager.hs+3−1
@@ -20,6 +20,7 @@ import Data.OrdPSQ (OrdPSQ)
2020import qualified Data.OrdPSQ as Q
2121import Data.Time (UTCTime, NominalDiffTime, getCurrentTime, addUTCTime)
2222import Network.TLS (SessionID, SessionData, SessionManager(..))
23+import Control.Exception (assert)
2324
2425----------------------------------------------------------------
2526
@@ -73,8 +74,9 @@ newSessionManager conf = do
7374
7475cons :: Int -> Item -> DB -> DB
7576cons lim (k,t,v,Add) db
77+ | lim == 0 = Q.empty
7678 | Q.size db == lim = case Q.minView db of
77− Nothing -> Q.insert k t v Q.empty -- not happens, just in case
79+ Nothing -> assert False $ Q.insert k t v Q.empty
7880 Just (_,_,_,db') -> Q.insert k t v db'
7981 | otherwise = Q.insert k t v db
8082cons _ (k,_,_,Del) db = Q.delete k db