The IPP Listening Service implementation (server-side support) is embedded under the Apache web server. The web server receives IPP operations through HTTP POST requests. When an HTTP POST request is received, it is then passed on to the Apache IPP module (mod_ipp.so). Based on configuration, the Apache web service can also provide an authentication service and be used for encryption between print client and server. The listening service runs as it's own dedicated instance of Apache.
This process is as follows:
An IPP request is sent from the client to the server.
The Apache web server accepts the connection.
The Apache web server then hands the connection to mod_ipp.
mod_ipp passes the connection and configuration data to libipp-listener.
libipp-listener reads the request by using lipipp-core.
libipp-listener dispatches the request to the operation handler located in lipipp-listener.
The operation handler converts the request to a PAPI call and then makes the call.
The PAPI call is translated to a print service specific request by using psm-lpsched.
The print service responds to the request.
The psm-lpsched command converts the response to PAPI results.
The libpapi operation returns to the libipp-listener operation handler.
The libipp-listener operation handler passes results to dispatcher.
The libipp-listener dispatcher writes results to client by using the libipp-core library.
The dispatcher returns the mod_ipp entry point.