SuperScript::Software::ucspi-tcphandle

The tcpperl program


Usage

  tcpperl opts file prog
where 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.

Configuration

Edit the following files in src/ as necessary for your installation. Unless you use modules that require xs support or a nonstandard version of perl, the defaults should suffice.

Known Problems

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.