Network Error Logging (NEL)

Network Error Logging (NEL) provides out-of-band reporting of network errors via the Reporting API (see //net/reporting). Site operators can specify a NEL policy that defines the Reporting endpoint(s) on which they wish to receive reports about client-side errors encountered while connecting to the site. The draft spec can be found here.

This directory contains the core implementation of NEL.

Implementation overview

Most of the action takes place in NetworkErrorLoggingService, which handles receiving/processing NEL: response headers and generating/queueing reports about network requests. The NetworkErrorLoggingService is owned by the URLRequestContext.

Information about network requests comes directly from HttpNetworkTransaction, which informs NetworkErrorLoggingService of the details of the request such as the remote IP address and outcome (a net::Error code).

The NetworkErrorLoggingService finds a NEL policy applicable to the request (previously set by a NEL header), and if one exists, potentially queues a NEL report to be uploaded out-of-band to the policy's specified Reporting endpoint via the ReportingService.

Received NEL policies are persisted to disk by a PersistentNelStore, whose main implementation is the SqlitePersistentReportingAndNelStore.