diff -ruN --exclude=CVS -I \$OpenBSD: -I \$Id: ../src.mod_perl/usr.sbin/httpd/mod_perl/src/modules/perl/Connection.xs ./usr.sbin/httpd/mod_perl/src/modules/perl/Connection.xs --- ../src.mod_perl/usr.sbin/httpd/mod_perl/src/modules/perl/Connection.xs Sun Jun 1 18:04:27 2003 +++ ./usr.sbin/httpd/mod_perl/src/modules/perl/Connection.xs Sun Jun 8 17:29:59 2003 @@ -78,13 +78,14 @@ RETVAL = newSVpv((char *)&conn->remote_addr, sizeof conn->remote_addr); if(sv_addr) { - struct sockaddr_in addr; + struct sockaddr_storage addr; STRLEN sockaddrlen; char * new_addr = SvPV(sv_addr,sockaddrlen); if (sockaddrlen != sizeof(addr)) { croak("Bad arg length for remote_addr, length is %d, should be %d", sockaddrlen, sizeof(addr)); } - Copy(new_addr, &addr, sizeof addr, char); + memset(&addr, 0, sizeof addr); + Copy(new_addr, &addr, sizeof new_addr, char); conn->remote_addr = addr; } @@ -106,7 +107,7 @@ #else conn->remote_ip = pstrdup(conn->pool, (char *)SvPV(ST(1),na)); #endif - conn->remote_addr.sin_addr.s_addr = inet_addr(conn->remote_ip); + ((struct sockaddr_in *) &conn->remote_addr)->sin_addr.s_addr = inet_addr(conn->remote_ip); } OUTPUT: