diff options
author | Joey Hess <joey@kitenet.net> | 2012-08-29 15:46:42 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2012-08-29 15:46:42 -0400 |
commit | 0842e99637977237849e67f749b23d5528fb6284 (patch) | |
tree | b4a980d76d9cded21fd3501365b7db152cca7e83 /Assistant/TransferQueue.hs | |
parent | a4fa31ffa1b84412c02c6e70046602f390c7c698 (diff) |
forgot to update the tchan when dequeuing transfers
Diffstat (limited to 'Assistant/TransferQueue.hs')
-rw-r--r-- | Assistant/TransferQueue.hs | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/Assistant/TransferQueue.hs b/Assistant/TransferQueue.hs index 2b6f1d20e..3ecad600d 100644 --- a/Assistant/TransferQueue.hs +++ b/Assistant/TransferQueue.hs @@ -145,11 +145,15 @@ getNextTransfer q dstatus acceptable = atomically $ do dequeueTransfer :: TransferQueue -> DaemonStatusHandle -> Transfer -> IO Bool dequeueTransfer q dstatus t = do ok <- atomically $ do - (removed, l) <- partition (equivilantTransfer t . fst) + (removed, ls) <- partition (equivilantTransfer t . fst) <$> readTVar (queuelist q) - void $ writeTVar (queuesize q) (length l) - void $ writeTVar (queuelist q) l + void $ writeTVar (queuesize q) (length ls) + void $ writeTVar (queuelist q) ls + drain + forM_ ls $ unGetTChan (queue q) return $ not $ null removed when ok $ notifyTransfer dstatus return ok + where + drain = maybe noop (const drain) =<< tryReadTChan (queue q) |