Opened 6 years ago

Closed 5 years ago

#8529 closed bug (invalid)

Sequent reading from socket/connection on Windows fails

Reported by: Heimdell Owned by:
Priority: normal Milestone:
Component: None Version: 7.4.2
Keywords: sockets, windows, read failure Cc:
Operating System: Windows Architecture: Unknown/Multiple
Type of failure: Incorrect result at runtime Test Case:
Blocked By: Blocking:
Related Tickets: Differential Rev(s):
Wiki Page:

Description

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 []

Change History (1)

comment:1 Changed 5 years ago by thomie

Component: libraries/haskell2010None
Resolution: invalid
Status: newclosed

Thank you for the report. This is however not a bug in GHC or one of the libraries supplied with GHC. It is rather a problem in your code or in in one of the network libraries you are using. Please try asking on stackoverflow first, attaching you full program.

Note: See TracTickets for help on using tickets.