![]() | :: | Software | :: | ucspi-tcphandle |
tcpperl opts file progwhere opts is a series of tcphandle server options, file names a file containing perl code, and prog is one or more arguments specifying a perl subroutine plus arguments to run for each accepted connection.
tcpperl forks the requested number of children, each listening for TCP client connections. Before handling any requests, each child parses and runs the perl code in file. The file should end with a true expression, like a module.
To handle a request, a child process executes prog as a perl subroutine, with file descriptor 0 reading from the network and file descriptor 1 writing to the network. Before handling the request, the child sets certain environment variables, a la tcpserver.
Each invocation of prog handles a single request. It is called within a loop, with one iteration per request, and therefore must release any resources allocated to handle a particular request.
If prog exits while handling a request, tcpperl will start a new child process.
tcpperl.c If your server uses a module like DBI.pm you may need to add the requisite xs code.
conf-ldperl Determine options required to load tcpperl. By default, these are calculated automatically. Using xs code in src/tcpperl.c may require manual option setting in src/conf-ldperl.
conf-ccperl Determine options required to compile tcpperl. By default, these are caluculated automatically.
conf-perl How to invoke perl to calculate options automatically in conf-ccperl and conf-ldperl.
CDB_File: iterative lookups succeed but random lookups fail. Each ipchandle server uses the original cdb library for access control. The CDB_File-0.92 package redefines cdb_findnext without declaring it static. The linker may select the wrong definition. Solution: add static to the declaration of cdb_findnext in CDB_File.xs.