Philip Hazel wrote: > On Fri, 20 May 2005, Philip Hazel wrote: > > > On Fri, 20 May 2005, Ian FREISLICH wrote: > > > > > You can do much the same with select(). Just replace my use of > > > poll() with appropriate select() magic. The purpose of this code > > > snippet was not to demonstrate the use of poll, but non-blocking > > > IO. When you write to an fd, it may block and you have no idea how > > > much you can write before it will block. If it's set to O_NONBLOCK, > > > as soon as poll()/select() says you can write without blocking, you > > > write() and write() returns at the point it would block with the > > > number of bytes actually written. > > > > OK. Point taken. > > However, when I came to look at possibly doing something to the code, I > realized that it is complicated by the TLS case. I am not sure if it is > even possible to do any kind of blocking check when TLS is in use. So I > have left the code as it is. Well, almost. While reading it I noticed a > bug: when a buffer is only partly written by one write() call, Exim was > re-applying the same timeout to the next write(). This seems wrong, as > it would allow a very slow acceptor to delay for a very long time. So I > fixed that.
Oh. I would think that is right. Any data accepted by the remote host should reset the timeout. You can't expect your whole buffer to be transferred in a single packet, can you? Ian -- Ian Freislich -- ## List details at http://www.exim.org/mailman/listinfo/exim-users ## Exim details at http://www.exim.org/ ## Please use the Wiki with this list - http://www.exim.org/eximwiki/
