Sequent reading from socket/connection on Windows fails
I wrote a simple TCP-client, which consumes and produces 8-byte packets.
When I run it on linux, it works perfectly, being part of the loop (write-read-write-read-...).
On windows it receives only first msg from the other side (write-read-write-write-...). The packets are still going, although.
Before that, I used the sockets directly; changing to HandleStream didn't help.
The code is:
transmit :: Int -> HandleStream ByteString -> ByteString -> IO [Bytestring]
transmit delay sock packet = do
let input = timeout delay $ sock `readBlock` 8 <* putStrLn "\nData was read!"
sock `writeBlock` pack
strings <- whileJust input
return [str | Right str <- strings]
whileJust action = do
result <- action
case result of
Just a -> (:) <$> return a <*> whileJust action
Nothing -> return []
Trac metadata
| Trac field | Value |
|---|---|
| Version | 7.4.2 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | libraries/haskell2010 |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |