1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- #######################################################################
- # gdipfrun.pm
- #
- # This routine is a common FastCGI template.
- #
- # It runs a single looping acceptor thread.
- #
- # See COPYING for licensing information.
- #
- #######################################################################
- # Perl modules
- use strict;
- use FCGI;
- # global variables
- use vars qw($cgi_exit $conf $bad_config);
- # GnuDIP modules
- use gdiplib;
- sub gdipfrun {
- # functions to run in thread
- my $initfunc = shift;
- my $acptfunc = shift;
- if (! $initfunc) {
- print STDERR "GnuDIP FastCGI has exited - no initialization function passed\n";
- exit 1;
- }
- if (! $acptfunc) {
- print STDERR "GnuDIP FastCGI has exited - no accept function passed\n";
- exit 1;
- }
- # force persistence
- $$conf{'persistance'} = 'YES';
- # create request
- my $req = FCGI::Request();
- if (! $req->IsFastCGI()) {
- print STDERR "GnuDIP FastCGI not called as FastCGI program\n";
- return;
- }
- # configuration error handler for now
- $bad_config = sub {
- # go do Finish
- goto FINISH;
- };
- # run initialization
- &$initfunc();
- # accept connections
- while ($req->Accept() eq 0) {
- # override for "exit"
- $cgi_exit = sub {
- # next connection
- goto ENDLOOP;
- };
- # run the CGI
- &$acptfunc();
- ENDLOOP:
- undef $cgi_exit;
- $req->Finish();
- }
- FINISH:
- undef $bad_config;
- # should never get here
- print STDERR "GnuDIP FastCGI has ended unexpectedly\n";
- }
- #####################################################
- # must return 1
- #####################################################
- 1;
|