CUPS Proxy Daemon

Summary

The CUPS Proxy Daemon is responsible for parsing HTTP(S) requests from the VM’s file socket (/run/cups_proxy/cups.sock) and passing that to the CupsProxyService in Ash Chrome via Mojo. It also relays the HTTP(S) response generated by CupsProxyService back to Plugin VM.

The control flow is as follows:

Control Flow Diagram

The Mojo IPC channel is bootstrapped via the org.chromium.CupsProxyDaemon D-Bus service.

libmicrohttpd is used to parse (and validate) HTTP(S) requests.

The HTTP(S) requests are actually IPP(S) requests - validation of the IPP(S) part of the protocol is performed by the CUPS Proxy Service.

Design docs