Add a network timeout option to journal-upload

This commit is contained in:
Jayanth Ananthapadmanaban 2021-06-05 06:33:54 -07:00 committed by Lennart Poettering
parent 5a750c49a9
commit 279082ed49
2 changed files with 23 additions and 4 deletions

View file

@ -74,6 +74,17 @@
<listitem><para>SSL CA certificate.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>NetworkTimeoutSec=</varname></term>
<listitem><para>When network connectivity to the server is lost, this option
configures the time to wait for the connectivity to get restored. If the server is
not reachable over the network for the configured time, <command>systemd-journal-upload</command>
exits. Takes a value in seconds (or in other time units if suffixed with "ms", "min", "h", etc).
For details, see <citerefentry><refentrytitle>systemd.time</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
</para></listitem>
</varlistentry>
</variablelist>
</refsect1>

View file

@ -53,6 +53,7 @@ static const char *arg_machine = NULL;
static bool arg_merge = false;
static int arg_follow = -1;
static const char *arg_save_state = NULL;
static usec_t arg_network_timeout_usec = USEC_INFINITY;
static void close_fd_input(Uploader *u);
@ -211,6 +212,12 @@ int start_upload(Uploader *u,
return log_error_errno(SYNTHETIC_ERRNO(ENOSR),
"Call to curl_easy_init failed.");
/* If configured, set a timeout for the curl operation. */
if (arg_network_timeout_usec != USEC_INFINITY)
easy_setopt(curl, CURLOPT_TIMEOUT,
(long) DIV_ROUND_UP(arg_network_timeout_usec, USEC_PER_SEC),
LOG_ERR, return -EXFULL);
/* tell it to POST to the URL */
easy_setopt(curl, CURLOPT_POST, 1L,
LOG_ERR, return -EXFULL);
@ -561,10 +568,11 @@ finalize:
static int parse_config(void) {
const ConfigTableItem items[] = {
{ "Upload", "URL", config_parse_string, 0, &arg_url },
{ "Upload", "ServerKeyFile", config_parse_path_or_ignore, 0, &arg_key },
{ "Upload", "ServerCertificateFile", config_parse_path_or_ignore, 0, &arg_cert },
{ "Upload", "TrustedCertificateFile", config_parse_path_or_ignore, 0, &arg_trust },
{ "Upload", "URL", config_parse_string, 0, &arg_url },
{ "Upload", "ServerKeyFile", config_parse_path_or_ignore, 0, &arg_key },
{ "Upload", "ServerCertificateFile", config_parse_path_or_ignore, 0, &arg_cert },
{ "Upload", "TrustedCertificateFile", config_parse_path_or_ignore, 0, &arg_trust },
{ "Upload", "NetworkTimeoutSec", config_parse_sec, 0, &arg_network_timeout_usec },
{}
};