[GHC] #8529: Sequent reading from socket/connection on Windows fails

GHC ghc-devs at haskell.org
Wed Nov 13 12:37:03 UTC 2013


#8529: Sequent reading from socket/connection on Windows fails
-------------------------------------+-------------------------------------
       Reporter:  Heimdell           |             Owner:
           Type:  bug                |            Status:  new
       Priority:  normal             |         Milestone:
      Component:                     |           Version:  7.4.2
  libraries/haskell2010              |  Operating System:  Windows
       Keywords:  sockets, windows,  |   Type of failure:  Incorrect result
  read failure                       |  at runtime
   Architecture:  Unknown/Multiple   |         Test Case:
     Difficulty:  Unknown            |          Blocking:
     Blocked By:                     |
Related Tickets:                     |
-------------------------------------+-------------------------------------
 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 []
 }}}

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/8529>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list