Source code

Revision control

Copy as Markdown

Other Tools

Ping Sender
===========
The ping sender is a minimalistic program whose sole purpose is to deliver a
telemetry ping. It accepts the following parameters:
- the URL the ping will be sent to (as an HTTP POST command);
- the path to an uncompressed file holding the ping contents.
Once the ping has been read from disk the ping sender will try to post it once, exiting
with a non-zero value if it fails. If sending the ping succeeds then the ping file is removed.
The content of the HTTP request is *gzip* encoded. The request comes with a few
additional headers:
- ``User-Agent: pingsender/1.0``
- ``X-PingSender-Version: 1.0``. Even if this data is already included by the user agent, this
header is needed as the pipeline is not currently storing use agent strings and doing that
could require storing a fair chunk of redundant extra data. We need to discern between pings
sent using the ping sender and the ones sent using the normal flow, at the end of the
ingestion pipeline, for validation purposes.
.. note::
The ping sender relies on libcurl for Linux and Mac build and on WinInet for
Windows ones for its HTTP functionality. It currently ignores Firefox or the
system proxy configuration.
In non-debug mode the ping sender doesn't print anything, not even on error,
this is done deliberately to prevent startling the user on architectures such
as Windows that would open a separate console window just to display the
program output. If you need runtime information to be printed out compile the
ping sender with debugging enabled.
The pingsender is not supported on Firefox for Android