diff options
author | Thomas Haller <thaller@redhat.com> | 2017-06-02 19:11:11 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2017-06-02 19:15:30 +0200 |
commit | f1eb1619f173a092c49dfcd1d53ec356827b6e0a (patch) | |
tree | ffe34f1b596a4bc8d1858d948dc20e6bd6055845 /src/nm-connectivity.c | |
parent | ea6648cea13219fac81b01f1ea85292a08f671b3 (diff) | |
download | NetworkManager-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
Diffstat (limited to 'src/nm-connectivity.c')
-rw-r--r-- | src/nm-connectivity.c | 29 |
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 |