This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [1.7] IPv6 accept() fails if address_len is < sizeof(sockaddr_in6) [was Re: PATCH /usr/include/X11/Xtrans/Xtranssock.c [WAS: Re: xhost package not compiled for IPv6]]



The opengroup man page indeed specifies the address to be truncated if the storage size is too small. I wonder, however, what kind of sense that makes.
Of what use would the truncated address be? This might also require applications to verify the integrity of the data returned even if accept() returns successfully.
However, Linux also has accept() returning successfully in this case.
For compatibility, the Cygwin implementation should probably be faithful to the *NIX behavior and not the Windows practice, since the primary idea of Cygwin is to be a portability layer for *NIX apps.





Jon TURNEY wrote:
On 12/08/2009 13:54, Jon TURNEY wrote:
Hmmm... but if it's really the size of the sockname argument which is
causing the accept() to fail, this would be a bug in cygwin's accept()
implementation, as it's supposed to truncate the data written to the
sockname, rather than fail if it won't fit [1]. If that actually is the
case, since we don't actually use the peer address here, the code as
stands is correct (if a little odd).

I suppose I need to write a small test case to look at this...

[1] http://www.opengroup.org/onlinepubs/009695399/functions/accept.html

A couple of small programs which hopefully demonstrate this problem.


(As is, the connection fails, but uncommenting the alternate definition of cliaddr in listener.c allows it to work)

I'd hazard a guess that perhaps this is because the underlying winsock accept() doesn't have this truncate behaviour and considers a too-small address_len an error.
------------------------------------------------------------------------


--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple


--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]