summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2017-06-02 19:11:11 +0200
committerThomas Haller <thaller@redhat.com>2017-06-02 19:15:30 +0200
commitf1eb1619f173a092c49dfcd1d53ec356827b6e0a (patch)
treeffe34f1b596a4bc8d1858d948dc20e6bd6055845
parentea6648cea13219fac81b01f1ea85292a08f671b3 (diff)
downloadNetworkManager-f1eb1619f173a092c49dfcd1d53ec356827b6e0a.tar.gz
connectivity: fix scheduling periodic connectivity checks
commit a955639 (connectivity: don't do periodic checks on interval=0) broke scheduling connectivity checks. That is because the timer is on only scheduled if nm_connectivity_check_enabled(), which in turn only returns TRUE if curl_mhandle is set. However, nm_connectivity_init() would only initialize curl_mhandle after update_config(), missing to schedule the periodic task. https://mail.gnome.org/archives/networkmanager-list/2017-May/msg00076.html Fixes: a95563996f07641e9877eb1760cac24415b65070
-rw-r--r--src/nm-connectivity.c29
1 files changed, 15 insertions, 14 deletions
diff --git a/src/nm-connectivity.c b/src/nm-connectivity.c
index b96737cd66..6f16b28e56 100644
--- a/src/nm-connectivity.c
+++ b/src/nm-connectivity.c
@@ -486,27 +486,28 @@ nm_connectivity_init (NMConnectivity *self)
NMConnectivityPrivate *priv = NM_CONNECTIVITY_GET_PRIVATE (self);
CURLcode retv;
- priv->config = g_object_ref (nm_config_get ());
- update_config (self, nm_config_get_data (priv->config));
- g_signal_connect (G_OBJECT (priv->config),
- NM_CONFIG_SIGNAL_CONFIG_CHANGED,
- G_CALLBACK (config_changed_cb),
- self);
-
retv = curl_global_init (CURL_GLOBAL_ALL);
if (retv == CURLE_OK)
priv->curl_mhandle = curl_multi_init ();
- if (priv->curl_mhandle == NULL) {
+ if (!priv->curl_mhandle)
_LOGE ("unable to init cURL, connectivity check will not work");
- return;
+ else {
+ curl_multi_setopt (priv->curl_mhandle, CURLMOPT_SOCKETFUNCTION, multi_socket_cb);
+ curl_multi_setopt (priv->curl_mhandle, CURLMOPT_SOCKETDATA, self);
+ curl_multi_setopt (priv->curl_mhandle, CURLMOPT_TIMERFUNCTION, multi_timer_cb);
+ curl_multi_setopt (priv->curl_mhandle, CURLMOPT_TIMERDATA, self);
+ curl_multi_setopt (priv->curl_mhandle, CURLOPT_VERBOSE, 1);
}
- curl_multi_setopt (priv->curl_mhandle, CURLMOPT_SOCKETFUNCTION, multi_socket_cb);
- curl_multi_setopt (priv->curl_mhandle, CURLMOPT_SOCKETDATA, self);
- curl_multi_setopt (priv->curl_mhandle, CURLMOPT_TIMERFUNCTION, multi_timer_cb);
- curl_multi_setopt (priv->curl_mhandle, CURLMOPT_TIMERDATA, self);
- curl_multi_setopt (priv->curl_mhandle, CURLOPT_VERBOSE, 1);
+ priv->config = g_object_ref (nm_config_get ());
+
+ update_config (self, nm_config_get_data (priv->config));
+ g_signal_connect (G_OBJECT (priv->config),
+ NM_CONFIG_SIGNAL_CONFIG_CHANGED,
+ G_CALLBACK (config_changed_cb),
+ self);
+
}
static void