NetworkManager/0018-periodic-connectivity-check-rh1458399.patch
Lubomir Rintel ebf02b63fe Add upstream patches that went into RHEL
- bond: fix crash comparing mode while generating bond connection (rh #1459580)
- connectivity: fix route penalty if WWAN and BT device using ip-ifindex (rh #1459932)
- device: persist nm-owned in run state (rh #1376199)
- device: fix assuming master device on restart (rh #1452062)
- device: apply route metric penality only when the default route exists (rh #1459604)
- connectivity: fix periodic connectivity check (rh #1458399)
- bond: improve option matching on daemon restart (rh #1457909)
- device: fix touching device after external activation (rh #1457242)
2017-06-09 17:27:09 +02:00

148 lines
5.7 KiB
Diff

From 2d4555ec97d2cb0829106cbff82753bd168e5a20 Mon Sep 17 00:00:00 2001
From: Thomas Haller <thaller@redhat.com>
Date: Fri, 12 May 2017 09:37:42 +0200
Subject: [PATCH 1/3] connectivity: avoid compiler warning for argument of
curl_easy_getinfo()
libcurl employs some typechecking via "curl/typecheck-gcc.h". When
compling with --enable-lto, compilation fails otherwise with:
make[2]: Entering directory '/data/src/NetworkManager'
CC src/src_libNetworkManager_la-nm-connectivity.lo
CCLD src/libNetworkManager.la
CCLD src/libNetworkManagerTest.la
CCLD src/dhcp/tests/test-dhcp-dhclient
src/nm-connectivity.c: In function 'curl_check_connectivity':
src/nm-connectivity.c:147:10: error: call to '_curl_easy_getinfo_err_string' declared with attribute warning: curl_easy_getinfo expects a pointer to char * for this info [-Werror]
eret = curl_easy_getinfo (msg->easy_handle, CURLINFO_PRIVATE, &cb_data);
^
lto1: all warnings being treated as errors
lto-wrapper: fatal error: /usr/bin/gcc returned 1 exit status
compilation terminated.
/usr/bin/ld: error: lto-wrapper failed
(cherry picked from commit 7f8815a9c35c3b588b174c5e0c2568d3068726f6)
(cherry picked from commit 7f139c8ea87d0ceaa1f1d3601c846ace9054ffe5)
---
src/nm-connectivity.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/nm-connectivity.c b/src/nm-connectivity.c
index 75bb7b6..0708d96 100644
--- a/src/nm-connectivity.c
+++ b/src/nm-connectivity.c
@@ -144,7 +144,7 @@ curl_check_connectivity (CURLM *mhandle, CURLMcode ret)
continue;
/* Here we have completed a session. Check easy session result. */
- eret = curl_easy_getinfo (msg->easy_handle, CURLINFO_PRIVATE, &cb_data);
+ eret = curl_easy_getinfo (msg->easy_handle, CURLINFO_PRIVATE, (char **) &cb_data);
if (eret != CURLE_OK) {
_LOG2E ("curl cannot extract cb_data for easy handle %p, skipping msg", msg->easy_handle);
continue;
--
2.9.4
From e94a36ce1c880c5a4f52ae59d18bb2b6d2bee704 Mon Sep 17 00:00:00 2001
From: Francesco Giudici <fgiudici@redhat.com>
Date: Wed, 3 May 2017 17:01:41 +0200
Subject: [PATCH 2/3] connectivity: fix typo in error message
(cherry picked from commit 7a2c31a54a7ee82b930b0d9ef21ea11f565c2859)
(cherry picked from commit 16187171709347611caf9b8e8c75988c15b66b12)
---
src/nm-connectivity.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/nm-connectivity.c b/src/nm-connectivity.c
index 0708d96..b96737c 100644
--- a/src/nm-connectivity.c
+++ b/src/nm-connectivity.c
@@ -498,7 +498,7 @@ nm_connectivity_init (NMConnectivity *self)
priv->curl_mhandle = curl_multi_init ();
if (priv->curl_mhandle == NULL) {
- _LOGE ("cnable to init cURL, connectivity check will not work");
+ _LOGE ("unable to init cURL, connectivity check will not work");
return;
}
--
2.9.4
From fe45631585e93e15c552194cf4ffd82cbe513ee1 Mon Sep 17 00:00:00 2001
From: Thomas Haller <thaller@redhat.com>
Date: Fri, 2 Jun 2017 19:11:11 +0200
Subject: [PATCH 3/3] 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
(cherry picked from commit f1eb1619f173a092c49dfcd1d53ec356827b6e0a)
(cherry picked from commit e984d9eb36f7838df58c0606bd00efc10730d329)
---
src/nm-connectivity.c | 29 +++++++++++++++--------------
1 file changed, 15 insertions(+), 14 deletions(-)
diff --git a/src/nm-connectivity.c b/src/nm-connectivity.c
index b96737c..6f16b28 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
--
2.9.4