packages feed

quic 0.2.16 → 0.2.17

raw patch · 3 files changed

+23/−15 lines, 3 files

Files

ChangeLog.md view
@@ -1,6 +1,10 @@ # ChangeLog -## 0.2.15+## 0.2.17++* Using waitReadSocketSTM properly.++## 0.2.16  * Fixing build on Windows.   [#80](https://github.com/kazu-yamamoto/quic/pull/80)
Network/QUIC/Server/Reader.hs view
@@ -147,15 +147,20 @@  data ServerState = Running | Stopped deriving (Eq, Show) -checkLoop :: TVar ServerState -> STM () -> IO Bool-checkLoop stvar waitsock = atomically $ do-    st <- readTVar stvar-    if st == Stopped-        then-            return False+checkLoop :: TVar ServerState -> Socket -> IO Bool+checkLoop stvar mysock = do+    st0 <- readTVarIO stvar+    if st0 == Stopped+        then return False         else do-            waitsock -- blocking is retry-            return True+            wait <- waitReadSocketSTM mysock+            atomically $ do+                st <- readTVar stvar+                if st == Stopped+                    then return False+                    else do+                        wait -- blocking is retry+                        return True  dispatcher     :: Dispatch@@ -166,11 +171,10 @@     -> IO () dispatcher d conf stvar forkConnection mysock = do     labelMe "QUIC dispatcher"-    wait <- waitReadSocketSTM mysock-    handleLogUnit logAction $ loop wait+    handleLogUnit logAction loop   where-    loop wait = do-        cont <- checkLoop stvar wait+    loop = do+        cont <- checkLoop stvar mysock         when cont $ do             (bs, peersa) <- safeRecv $ NSB.recvFrom mysock 2048             now <- getTimeMicrosecond@@ -181,7 +185,7 @@             let bytes = BS.length bs                 switch = dispatch d conf forkConnection logAction mysock peersa send' bytes now             mapM_ switch cpckts-            loop wait+            loop      doDebug = isJust $ scDebugLog conf     logAction msg
quic.cabal view
@@ -1,6 +1,6 @@ cabal-version:      >=1.10 name:               quic-version:            0.2.16+version:            0.2.17 license:            BSD3 license-file:       LICENSE maintainer:         kazu@iij.ad.jp