Setting the proxy: The packagekitd daemon sets the network proxy for the packaging backend so that packages can be downloaded when on a corporate or managed network. If the system-wide ProxyHTTP or ProxyFTP are set in PackageKit.conf then these are used by default. If these keys are blank or not present then the session proxy can be used. The session proxies are the values that are set in the network proxy configuration. The session proxy is read by a session process that is started at login time, and then relayed to PackageKit. In GNOME, this is done by the gpk-update-icon process, which reads the settings from GConf, and executes SetProxy on org.freedesktop.PackageKit. Note: this method is on the main interface, not a transaction interface. The rationale for this is that every client using PackageKit should not have to read and set the proxy at the start of each and every transaction, as this would make each transaction slower to startup, and also require each client to read and track the session proxy configuration. To avoid this overhead, each session can register the proxy with the daemon once, and then the daemon can remember the user identifier and the session that it came from, and store this data in a database. When each transaction method is executed, the uid and session that executed the call are used to lookup the proxy settings and this is passed to the backend. This also allows the daemon to have to correct proxy settings if the daemon times out (as it is designed to do) and is restarted by a client application using DBus system activation.