On Wed, Apr 25, 2012 at 1:07 PM, MORITA Kazutaka <morita.kazutaka at gmail.com> wrote: > On Wed, Apr 25, 2012 at 10:05 AM, Huxinwei <huxinwei at huawei.com> wrote: >>> -----Original Message----- >>> From: MORITA Kazutaka [mailto:morita.kazutaka at gmail.com] >>> Sent: Tuesday, April 24, 2012 5:21 PM >>> To: Huxinwei >>> Cc: Li Wenpeng; sheepdog at lists.wpkg.org >>> Subject: Re: [Sheepdog] [PATCH] fix a bug in rx() when read() returns 0 but >>> connection is not marked as closed. >>> >>> On Tue, Apr 24, 2012 at 5:40 PM, Huxinwei <huxinwei at huawei.com> wrote: >>> > I proposed something similar a while ago. >>> > The connection is actually staying in CLOSE_WAIT status while this happens. >>> I'd suggest you consider something more reliable. >>> >>> Is there any case that read() returns zero but the connection is not closed? >> >> What if reading is interrupted by a signal ? >> Read() returns 0 while errno is EINTR then ? > > No, it returns -1 when errno is set. Agree. read() reurns 0 just means END OF FILE. In other words, the connection is alive in this case. Sheep should not check errno while read() returns 0. > > http://www.kernel.org/doc/man-pages/online/pages/man2/read.2.html > -- > sheepdog mailing list > sheepdog at lists.wpkg.org > http://lists.wpkg.org/mailman/listinfo/sheepdog -- Yunkai Zhang Work at Taobao |