diff options
-rw-r--r-- | Presence/XMPPServer.hs | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/Presence/XMPPServer.hs b/Presence/XMPPServer.hs index 6176bbe6..8f32535a 100644 --- a/Presence/XMPPServer.hs +++ b/Presence/XMPPServer.hs | |||
@@ -258,22 +258,20 @@ xmlStream conread conwrite = (xsrc,xsnk) | |||
258 | xsrc = src $= XML.parseBytes XML.def | 258 | xsrc = src $= XML.parseBytes XML.def |
259 | xsnk :: Sink (Flush Event) IO () | 259 | xsnk :: Sink (Flush Event) IO () |
260 | xsnk = -- XML.renderBytes XML.def =$ snk | 260 | xsnk = -- XML.renderBytes XML.def =$ snk |
261 | renderBuilderFlush XML.def | 261 | renderBuilderFlush XML.def |
262 | =$= builderToByteStringFlush | 262 | =$= builderToByteStringFlush |
263 | =$= discardFlush | 263 | =$= discardFlush |
264 | =$ snk | 264 | =$ snk |
265 | where | 265 | where |
266 | discardFlush :: Monad m => ConduitM (Flush a) a m () | 266 | discardFlush :: Monad m => ConduitM (Flush a) a m () |
267 | discardFlush = awaitForever $ \x -> do | 267 | discardFlush = awaitForever yieldChunk |
268 | let unchunk (Chunk a) = a | 268 | yieldChunk (Chunk x) = yield x |
269 | ischunk (Chunk _) = True | 269 | yieldChunk _ = return () |
270 | ischunk _ = False | ||
271 | when (ischunk x) $ yield (unchunk x) | ||
272 | 270 | ||
273 | src = do | 271 | src = do |
274 | v <- lift conread | 272 | v <- lift conread |
275 | maybe (return ()) -- lift . wlog $ "conread: Nothing") | 273 | maybe (return ()) -- lift . wlog $ "conread: Nothing") |
276 | (\v -> yield v >> src) | 274 | (yield >=> const src) |
277 | v | 275 | v |
278 | snk = awaitForever $ liftIO . conwrite | 276 | snk = awaitForever $ liftIO . conwrite |
279 | 277 | ||