Browse Source

fix stanza ID generator

master
Philipp Balzarek 13 years ago
parent
commit
74f4b409c1
  1. 3
      source/Network/Xmpp/Concurrent.hs
  2. 6
      source/Network/Xmpp/Types.hs

3
source/Network/Xmpp/Concurrent.hs

@ -113,12 +113,13 @@ newSession stream config = runErrorT $ do
] ]
(kill, wLock, streamState, readerThread) <- ErrorT $ startThreadsWith stanzaHandler eh stream (kill, wLock, streamState, readerThread) <- ErrorT $ startThreadsWith stanzaHandler eh stream
writer <- lift $ forkIO $ writeWorker outC wLock writer <- lift $ forkIO $ writeWorker outC wLock
idGen <- liftIO $ sessionStanzaIDs config
return $ Session { stanzaCh = stanzaChan return $ Session { stanzaCh = stanzaChan
, outCh = outC , outCh = outC
, iqHandlers = iqHandlers , iqHandlers = iqHandlers
, writeRef = wLock , writeRef = wLock
, readerThread = readerThread , readerThread = readerThread
, idGenerator = sessionStanzaIDs config , idGenerator = idGen
, streamRef = streamState , streamRef = streamState
, eventHandlers = eh , eventHandlers = eh
, stopThreads = kill >> killThread writer , stopThreads = kill >> killThread writer

6
source/Network/Xmpp/Types.hs

@ -1100,7 +1100,7 @@ data SessionConfiguration = SessionConfiguration
-- | Handler to be run when the session ends (for whatever reason). -- | Handler to be run when the session ends (for whatever reason).
, sessionClosedHandler :: XmppFailure -> IO () , sessionClosedHandler :: XmppFailure -> IO ()
-- | Function to generate the stream of stanza identifiers. -- | Function to generate the stream of stanza identifiers.
, sessionStanzaIDs :: IO StanzaID , sessionStanzaIDs :: IO (IO StanzaID)
, extraStanzaHandlers :: [StanzaHandler] , extraStanzaHandlers :: [StanzaHandler]
} }
@ -1109,10 +1109,10 @@ instance Default SessionConfiguration where
, sessionClosedHandler = \_ -> return () , sessionClosedHandler = \_ -> return ()
, sessionStanzaIDs = do , sessionStanzaIDs = do
idRef <- newTVarIO 1 idRef <- newTVarIO 1
atomically $ do return . atomically $ do
curId <- readTVar idRef curId <- readTVar idRef
writeTVar idRef (curId + 1 :: Integer) writeTVar idRef (curId + 1 :: Integer)
return . read. show $ curId return . StanzaID . Text.pack . show $ curId
, extraStanzaHandlers = [] , extraStanzaHandlers = []
} }

Loading…
Cancel
Save