ID: 27509 User updated by: scott at abcoa dot com Reported By: scott at abcoa dot com -Status: Feedback +Status: Open Bug Type: Sockets related Operating System: AIX 4.3.3 PHP Version: 4.3.4 Assigned To: pollita New Comment:
Downloaded the CVS snapshot "php4-STABLE-200403121830" and did the configure line with the common options I use for Apache, like openssl, odbc, etc. This time, I left out the "--disable-ipv6" option. So far so good, re-checked the file, "main/php_config.h" for "HAVE_IPV6" and "HAVE_GETADDRINFO". So far, so good. The "HAVE_GETADDRINFO" is comment out as expected with the recent fix. Went on to make and install PHP and test the fsockopen(). So far so good. (Just want to test it just in case :-) ). Then tried again with the same configure line but include the "--disable-ipv6". So far so good with the "HAVE_GETADDRINFO" commented out and "HAVE_IPV6" with a value of "0". The fix you checked in is working great!! You got it! Previous Comments: ------------------------------------------------------------------------ [2004-03-11 19:42:29] [EMAIL PROTECTED] I've committed an extended check to configure.in but it didn't make it into the 3/12/04 00:30 GMT snapshot. You'll need to wait for the 3/12/04 02:30 GMT snapshot. When you get a change to try that out, run ./configure (with whatever options you'd normally use). after configure completes, check your main/php_config.h for the HAVE_GETADDRINFO line. If it's still defined (despite the revised check) then email me a copy of your config.log file. Otherwise all should be well, go ahead and `make` and test out fsockopen(). Even if it works, reply back saying so, that way I can merge the change to the PHP5 branch and close this bug out. ------------------------------------------------------------------------ [2004-03-11 18:07:54] [EMAIL PROTECTED] I'd say "give it a shot". The problem is sounding very much like a brokenness in the getaddrinfo() implementation rather than the IPv6 stack. I'll see what can be done about building a getaddrinfo test into the ./configure process so that it's automatically disabled if it proves itself unreliable. I want to discuss this with some people before making any commits, in the mean time I encourage you to try different settings with/without HAVE_IPV6 and with/without HAVE_GETADDRINFO. Work in your normal ./configure options (i.e.: --with-apxs, --enable-ftp, --with-sqlite, etc...) as well. ------------------------------------------------------------------------ [2004-03-11 17:43:34] scott at abcoa dot com Is it still possible for me to use the ipv6 enabled later on? ------------------------------------------------------------------------ [2004-03-11 17:42:23] scott at abcoa dot com With the latest CVS tarball and the configure line, "./configure --disable-ipv6". After configuring and before the make compilation. The main/php_config.h showed ... --snip-- /* Whether to enable IPv6 support */ /* #undef HAVE_IPV6 */ --snip-- So far, so good. Again, checking for ... --snip-- /* Define if you have the getaddrinfo function */ #define HAVE_GETADDRINFO 1 --snip-- So, it is already defined as you expected. So, replacing it with "/* #define HAVE_GETADDRINFO 1 */". Then on to make and installing. So far, so good. Then ran the fsockopen() test.. The result look good.. --snip-- Content-type: text/html X-Powered-By: PHP/4.3.5RC4-dev !#/usr/local/bin/php 0 --snip-- Then tested with the "Example 1. fsockopen() Example" from http://us3.php.net/manual/en/function.fsockopen.php and it work like a charm. Let me know when the fix is made and get checked into the CVS for 4.3.4 build/branch and for 5.0 build/branch. I'll be happy to do a few more testing if you need me to. ------------------------------------------------------------------------ [2004-03-11 15:40:28] [EMAIL PROTECTED] That's..... I think "messed up" is the technical term. I see two major problems here. 1) hints.ai_family is being reset by code that should be excluded by having used the --disable-ipv6 switch. 2) getaddrinfo() is returning a structure that, while it contains a top-level field insisting it's an AF_INET address. Contains a sockaddr child structure with an ai_family of PF_UNSPEC. So when php_hostconenect gets it, it tries creating a socket with an "unspecified" address family. No wonder it's unsupported eh? Let's go down this road: First, undo that patch, download a new tarball if necessary. Heck, might as well grab the latest CVS snapshot. Though if you reuse your current tree with a restored main/network.c you'll need to be sure and run `make clean`. Next, run a normal ./configure with the --disable-ipv6 switch. Now, BEFORE running make, edit main/php_config.h and check that HAVE_IPV6 is in fact, not defined. If it is defined, comment it out (And let us know in your feedback). Next, look for HAVE_GETADDRINFO in the same file. Make sure it is also undefined. (I expect that it will be defined, so you'll need to comment it out) Finally, run make, and try out the fsockopen test. ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/27509 -- Edit this bug report at http://bugs.php.net/?id=27509&edit=1