Hi,
when running FastCGI apps under Perl in the background with fcgi/FCGI.pm
and you're using IPC::Open3, IPC::Run, IPC::Run3 or other code that
calls fileno() on a FCGI filehandle the application will die with:
Can't locate object method "FILENO" via package "FCGI::Stream" at
/usr/local/libdata/perl5/site_perl/IPC/Run.pm line 1118.
Surprisingly, the FCGI.pm contains the function FILENO which is
commented out - the attached patch changes that and makes the named
IPC::* modules work under FastCGI.
Please test and comment.
Regards,
Simon
P.S.: additionally the other patches got regenerated
Index: Makefile
===================================================================
RCS file: /cvs/ports/www/fcgi/Makefile,v
retrieving revision 1.9
diff -u -p -r1.9 Makefile
--- Makefile 15 Sep 2007 20:38:21 -0000 1.9
+++ Makefile 23 May 2008 05:11:25 -0000
@@ -3,7 +3,7 @@
COMMENT= FastCGI Development Kit
DISTNAME= fcgi-2.4.0
-PKGNAME= ${DISTNAME}p2
+PKGNAME= ${DISTNAME}p3
CATEGORIES= www
SHARED_LIBS += fcgi 0.0 # .0.0
SHARED_LIBS += fcgi++ 1.0 # .1.0
Index: patches/patch-libfcgi_Makefile_in
===================================================================
RCS file: /cvs/ports/www/fcgi/patches/patch-libfcgi_Makefile_in,v
retrieving revision 1.1
diff -u -p -r1.1 patch-libfcgi_Makefile_in
--- patches/patch-libfcgi_Makefile_in 30 Dec 2005 22:27:40 -0000 1.1
+++ patches/patch-libfcgi_Makefile_in 23 May 2008 05:11:25 -0000
@@ -1,7 +1,7 @@
$OpenBSD: patch-libfcgi_Makefile_in,v 1.1 2005/12/30 22:27:40 sturm Exp $
---- libfcgi/Makefile.in.orig Fri Dec 30 23:20:04 2005
-+++ libfcgi/Makefile.in Fri Dec 30 23:20:29 2005
-@@ -115,7 +115,7 @@ libfcgi___la_SOURCES = $(INCLUDE_FILES)
+--- libfcgi/Makefile.in.orig Sun Jan 19 18:21:18 2003
++++ libfcgi/Makefile.in Fri May 23 07:12:26 2008
+@@ -115,7 +115,7 @@ libfcgi___la_SOURCES = $(INCLUDE_FILES) \
fcgio.cpp
libfcgi___la_CFLAGS = @PTHREAD_CFLAGS@
Index: patches/patch-libfcgi_os_unix_c
===================================================================
RCS file: /cvs/ports/www/fcgi/patches/patch-libfcgi_os_unix_c,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 patch-libfcgi_os_unix_c
--- patches/patch-libfcgi_os_unix_c 11 Feb 2004 20:13:35 -0000 1.1.1.1
+++ patches/patch-libfcgi_os_unix_c 23 May 2008 05:11:25 -0000
@@ -1,7 +1,7 @@
$OpenBSD: patch-libfcgi_os_unix_c,v 1.1.1.1 2004/02/11 20:13:35 sturm Exp $
---- libfcgi/os_unix.c.orig 2004-02-11 20:40:53.000000000 +0100
-+++ libfcgi/os_unix.c 2004-02-11 20:41:05.000000000 +0100
-@@ -536,7 +536,7 @@ int OS_SpawnChild(char *appPath, int lis
+--- libfcgi/os_unix.c.orig Tue Mar 5 20:14:49 2002
++++ libfcgi/os_unix.c Fri May 23 07:12:26 2008
+@@ -536,7 +536,7 @@ int OS_SpawnChild(char *appPath, int listenFd)
*
* XXX: entire environment passes through
*/
Index: patches/patch-perl_FCGI_PL
===================================================================
RCS file: patches/patch-perl_FCGI_PL
diff -N patches/patch-perl_FCGI_PL
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-perl_FCGI_PL 23 May 2008 05:11:25 -0000
@@ -0,0 +1,12 @@
+$OpenBSD$
+--- perl/FCGI.PL.orig Fri May 23 07:12:42 2008
++++ perl/FCGI.PL Fri May 23 07:13:06 2008
+@@ -393,7 +393,7 @@ sub OPEN {
+ # Apparently some use fileno to determine if a filehandle is open,
+ # so we might want to return a defined, but meaningless value.
+ # An alternative would be to return the fcgi stream fd.
+-# sub FILENO { -2 }
++sub FILENO { -2 }
+
+ 1;
+