On Wed, Apr 13, 2011 at 2:11 PM, Jeff Trawick <[email protected]> wrote: > On Wed, Apr 13, 2011 at 1:51 PM, William A. Rowe Jr. > <[email protected]> wrote: >> On 4/13/2011 9:53 AM, Jeff Trawick wrote: >>> On Tue, Apr 5, 2011 at 9:28 AM, <[email protected]> wrote: >>>> Author: trawick >>>> Date: Tue Apr 5 13:28:59 2011 >>>> New Revision: 1089031 >>>> >>>> URL: http://svn.apache.org/viewvc?rev=1089031&view=rev >>>> Log: >>>> restructure Windows apr_socket_connect() to more closely match >>>> the Unix implementation, fixing the getpeername() optimization >>>> and WSAEISCONN behavior >>>> >>>> PR: 48736 (covered WSAISCONN issue) >>>> Submitted by: <inoue ariel-networks.com> (WSAISCONN handling) >>>> Reworked/extended by: trawick >>> >>> trivia: getpeername() fails for a connected IPv6 socket on XP; this >>> change to get the getpeername() optimization to work "fixes" that for >>> the common case >> >> Is this another aspect of the same flaw we just worked through, when I last >> attempted to normalize this? (That one broke IP addresses on win2k, see >> for example https://issues.apache.org/bugzilla/show_bug.cgi?id=41693 ). > > That one is hard to follow... It points to another bug, that one said > Win32DisableAcceptEX was a work-around, and there's a later update > from you saying "solved after 2.2.4 for windows 2000". > > I'll look a little further for earlier bug fixes.
in httpd 2.2.4, the only change in network_io/win32 was a new line which turned on remote_addr_unknown in alloc_socket() strictly speaking, that was correct; unfortunately there were no places where remote_addr_unknown was cleared; so getpeername() could be called when it hadn't been previously that was http://svn.apache.org/viewvc?view=revision&revision=480212 the core PR you're referring to is https://issues.apache.org/bugzilla/show_bug.cgi?id=41321 - getpeername() busted on Win2K then you made this change to os_sock_make to resolve the WinNT MPM issue (when AcceptEX is called): http://svn.apache.org/viewvc?view=revision&revision=494531 > >>> I'll probably backport this to 1.4.x for other reasons (but after 1.4.3). >> >> So if we tag httpd-2.3-something against 1.4.3, with IPv6 enabled, we will >> start collecting similar reports to the one above, for XP IPv6 connections? >> > > In testing 1.4.latest on XP this a.m. I didn't see an issue with my > simple server app which retrieved local and remote addresses, as the > getpeername() optimization on that side of the connection is working. > > apr_socket_accept() has this line to let it use the info from accept() > instead of calling getpeername(): (*new)->remote_addr_unknown = 0; whoops, that was my fix from the last couple of weeks; good, but no bearing on how past Win2K symptoms were resolved > > With 1.4.latest, the getpeername() optimization on the client side is > not working, and getpeername() on IPv6 is where the XP bug is. >
