John Goerzen writes: > With networking, you must be careful not to attempt to > read more data than the server hands back, or else you'll > block. [...] With a protocol such as IMAP, there is no > way to know until a server response is being parsed, how > many lines (or bytes) of data to read.
The approach I recommend is to run a scanner (tokenizer) before the actual parser. IMAP, like most other RFC protocols, is line-based; so you can use a very simple scanner to read a CRLF-terminated line efficiently (using non-blocking I/O, for example), which you can then feed into the parser just fine because you know that it has to contain a complete request (response) that you can handle. Peter _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe