Hi Rostislav,

PHP HEAD and PHP_5_1 (5.1.3) don't use libfcgi any more.
They use simplest and smallest replacement library.

Please look into CVS code and provide a patch for it (if necessary).

Thanks. Dmitry.

> -----Original Message-----
> From: Rostislav Krasny [mailto:[EMAIL PROTECTED] 
> Sent: Monday, March 20, 2006 11:46 AM
> To: internals@lists.php.net
> Subject: [PHP-DEV] FastCGI unix sockets support patch
> 
> 
> Hi,
> 
> According to a 'php -h' output of php-cgi 5.1.2 the FastCGI 
> can be used only by TCP/IP:
> 
>   -b <address:port>|<port> Bind Path for external FASTCGI Server mode
> 
> But according to the code FastCGI could also be used by UNIX 
> sockets. According to the code if the "-b <address:port>" 
> option is used and the port number is illegal or omitted then 
> all the "address:port" string assumed as a UNIX socket name. 
> That means that the UNIX socket should allways include a ":" 
> in its filename. My patch eliminate this limitation. After 
> applying it one should use "-b socket:" for UNIX sockets and 
> "-b address:port" or "-b port" for TCP/IP. And if the port 
> number is illegal, an error message is printed. If the "-b 
> socket:" format is used the ":" is not added to the UNIX 
> socket filename.
> 
> What do you think about following patch?
> 
> --- sapi/cgi/libfcgi/os_unix.c.orig   Sun Dec  7 14:59:54 2003
> +++ sapi/cgi/libfcgi/os_unix.c        Mon Mar 20 09:28:28 2006
> @@ -299,13 +299,15 @@
>      char    host[MAXPATHLEN];
>  
>      strlcpy(host, bindPath, MAXPATHLEN-1);
> -    if((tp = strchr(host, ':')) != 0) {
> +    if((tp = strrchr(host, ':')) != 0) {
>       *tp++ = 0;
> -     if((port = atoi(tp)) == 0) {
> -         *--tp = ':';
> -      } else {
> +     if (*tp != '\0') {
> +         if((port = atoi(tp)) == 0) {
> +             fprintf(stderr, "%s is illegal port number!\n", tp);
> +             return -1;
> +         }
>           tcp = TRUE;
> -      }
> +     }
>      }
>      if(tcp) {
>        if (!*host || !strcmp(host,"*")) {
> @@ -357,7 +359,7 @@
>       servLen = sizeof(sa.inetVariant);
>      } else {
>       unlink(bindPath);
> -     if(OS_BuildSockAddrUn(bindPath, &sa.unixVariant, &servLen)) {
> +     if(OS_BuildSockAddrUn(host, &sa.unixVariant, &servLen)) {
>           fprintf(stderr, "Listening socket's path name is 
> too long.\n");
>           return -1;
>       }
> 
> 
> This patch changes an OS_CreateLocalIpcFd() function. The 
> same change of OS_FcgiConnect() should probably be done as 
> well. I didn't because the OS_FcgiConnect() isn't used 
> anywhere by php.
> 
> -- 
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
> 
> 
> 

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to