summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBeniamino Galvani <bgalvani@redhat.com>2016-01-25 09:47:02 +0100
committerBeniamino Galvani <bgalvani@redhat.com>2016-01-25 17:46:01 +0100
commit3eb5037e1f34aa40320281893f58aca8ffa51952 (patch)
tree65e40f33a75a22b5cff7bad2f4ae920ec785ddca
parent37d0833a1526d2674243a9b06eeae1aba49dad76 (diff)
downloadNetworkManager-3eb5037e1f34aa40320281893f58aca8ffa51952.tar.gz
dhcp/systemd: disable callback before stopping the client
Otherwise the call to stop() would generate a new unwanted state transition.
-rw-r--r--src/dhcp-manager/nm-dhcp-systemd.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/dhcp-manager/nm-dhcp-systemd.c b/src/dhcp-manager/nm-dhcp-systemd.c
index ca4027e8dd..2dc351dbee 100644
--- a/src/dhcp-manager/nm-dhcp-systemd.c
+++ b/src/dhcp-manager/nm-dhcp-systemd.c
@@ -815,10 +815,13 @@ stop (NMDhcpClient *client, gboolean release, const GByteArray *duid)
NMDhcpSystemdPrivate *priv = NM_DHCP_SYSTEMD_GET_PRIVATE (client);
int r = 0;
- if (priv->client4)
+ if (priv->client4) {
+ sd_dhcp_client_set_callback (priv->client4, NULL, NULL);
r = sd_dhcp_client_stop (priv->client4);
- else if (priv->client6)
+ } else if (priv->client6) {
+ sd_dhcp6_client_set_callback (priv->client6, NULL, NULL);
r = sd_dhcp6_client_stop (priv->client6);
+ }
if (r) {
nm_log_warn (priv->client6 ? LOGD_DHCP6 : LOGD_DHCP4,