summaryrefslogtreecommitdiff
path: root/Assistant/TransferQueue.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2012-08-29 15:46:42 -0400
committerGravatar Joey Hess <joey@kitenet.net>2012-08-29 15:46:42 -0400
commit0842e99637977237849e67f749b23d5528fb6284 (patch)
treeb4a980d76d9cded21fd3501365b7db152cca7e83 /Assistant/TransferQueue.hs
parenta4fa31ffa1b84412c02c6e70046602f390c7c698 (diff)
forgot to update the tchan when dequeuing transfers
Diffstat (limited to 'Assistant/TransferQueue.hs')
-rw-r--r--Assistant/TransferQueue.hs10
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)