moesocks 0.1.0.12 → 0.1.0.13
raw patch · 3 files changed
+6/−34 lines, 3 files
Files
- moesocks.cabal +1/−1
- readme.md +1/−0
- src/Network/MoeSocks/Helper.hs +4/−33
moesocks.cabal view
@@ -1,6 +1,6 @@ name: moesocks category: Network-version: 0.1.0.12+version: 0.1.0.13 license: Apache-2.0 synopsis: A functional firewall killer description: A socks5 proxy using the client / server architecture.
readme.md view
@@ -23,6 +23,7 @@ * IPv6 * Socks4 / Socks4a * UDP over Socks5+* Four times slower then original Python's implementation Planning features ------------------
src/Network/MoeSocks/Helper.hs view
@@ -337,6 +337,8 @@ _produce 0 `onException` _shutdown pure () + + consumeLoop :: String -> Timeout -> Maybe Double -> Socket -> TBQueue (Maybe ByteString) -> IO () consumeLoop aID aTimeout aThrottle aSocket aTBQueue = do@@ -372,15 +374,10 @@ case _r of Nothing -> () <$ _shutdown Just _data -> do- _len <- timeoutFor aID aTimeout - send aSocket _data -- when (_len < S.length _data) - do- atomically - unGetTBQueue aTBQueue -- Just - S.drop _len _data- + timeoutFor aID aTimeout - sendAll aSocket _data yield _consume - - _bytesSent + _len+ _bytesSent + S.length _data _consume 0 `onException` _shutdown pure ()@@ -392,32 +389,6 @@ setSocketCloseOnExec :: Socket -> IO () setSocketCloseOnExec aSocket = setFdOption (fromIntegral $ fdSocket aSocket) CloseOnExec True---readAll :: TBQueue (Maybe ByteString) -> STM (Maybe [ByteString])-readAll aTBQueue = do- _r <- readTBQueue aTBQueue- case _r of- Nothing -> pure Nothing- Just _b -> do- fmap (Just . reverse) - readMore [_b] aTBQueue-- where - readMore :: [ByteString] -> TBQueue (Maybe ByteString) -> STM [ByteString]- readMore _acc _q = do- _empty <- isEmptyTBQueue _q - if _empty- then pure - _acc- else - do- _more <- readTBQueue _q - case _more of- Nothing -> do- unGetTBQueue _q Nothing- pure - _acc- Just _r -> readMore (_r : _acc) _q- - tryIO :: String -> IO a -> IO (Either IOException a)