Hi Anders, Well, the two boxs happen to be a pre-115 and 115 combo. Initially the client host in question is pre_115. Thus I make the client on snv_115, the result is as following:
write len=1000000 test1 % write: EPIPE <-- actual response: % write: ENOTCONN write len=1000000 test1 % write: EPIPE <-- actual response: % write: EPIPE Seems there's another separate issue here. While I believe the original issue has been addressed by 6833089. Thanks, that's great! Regards, -Siwei On Fri, Jul 31, 2009 at 2:25 AM, Anders Persson <[email protected]>wrote: > Hi Liu, > > This could be due to: > > 6833089 race in TCP connect path leads to spurious ENOTCONN failures > > And a fix went into snv_115. Which build are you using? > > Regards, > Anders > > > On Fri, Jul 31, 2009 at 12:12:22AM +0800, Liu Siwei wrote: > > Hi, > > > > I noticed this test no longer works on volo onwards bits. Specifically, > the > > client host (blocking sender side) never know of an SIGPIPE or EPIPE as > soon > > as the receiver close its connection. The first write ever return > > successfully, which prevents the application from knowing the underlying > > failure. Any idea about why? > > > > > > Thanks, > > > > $ cat tcp_flow_close.client > > # > > # Test the effect of closing the receiver socket when the sender > > # is blocked in a write. > > # Also test what happens to data on the read queue after the EPIPE > > # has ben delivered. > > # > > sleep time=3000 > > socket > > % socket done > > connect 0/8889 > > % connect done > > select read > > % select: (num 1) read > > recv peek > > % recv: (len 5) test2 > > write len=1000000 test1 > > % write: EPIPE <-- actual result: % write: ret 1000000 > > write len=1000000 test1 > > % write: EPIPE <-- actual result: % write: ENOTCONN > > recv > > % recv: (len 5) test2 > > recv > > % recv: ECONNRESET > > recv > > % recv: (len 0) > > close > > % close done > > > > socket > > % socket done > > connect 0/8889 > > % connect done > > select read > > % select: (num 1) read > > recv peek > > % recv: (len 5) test2 > > send len=1000000 test1 > > % send: EPIPE > > send len=1000000 test1 > > % send: EPIPE > > recv > > % recv: (len 5) test2 > > recv > > % recv: ECONNRESET > > recv > > % recv: (len 0) > > close > > % close done > > > > $ cat serv/tcp_flow_close.server > > # > > # Test the effect of closing the receiver socket when the sender > > # is blocked in a write. > > # > > socket > > % socket done > > bind 0/8889 > > % bind done > > listen > > % listen done > > accept anyport > > % accept: (len 16) 192.168.0.1/anyport > > select read > > % select: (num 1) read > > close > > % close done > > > > accept anyport > > % accept: (len 16) 192.168.0.1/anyport > > select read > > % select: (num 1) read > > close > > % close done > > > _______________________________________________ > > networking-discuss mailing list > > [email protected] >
_______________________________________________ networking-discuss mailing list [email protected]
