summaryrefslogtreecommitdiff
path: root/src/devices/adsl
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2018-05-18 12:14:46 +0200
committerThomas Haller <thaller@redhat.com>2018-05-25 12:35:49 +0200
commit43f67b42101d060c9e6b97486672a36f34bcec99 (patch)
tree7d198e62170889382073f6c05b18ea7d8115c6a3 /src/devices/adsl
parent53d04a1dfad0655a7484a506b060da3e36acfe4a (diff)
downloadNetworkManager-43f67b42101d060c9e6b97486672a36f34bcec99.tar.gz
ppp-manager: rework stopping NMPPPManager by merging async/sync methods
Previously, there were two functions nm_ppp_manager_stop_sync() and nm_ppp_manager_stop_async(). However, stop-sync() would still kill the process asynchronously (with a 2 seconds timeout before sending SIGKILL). On the other hand, stop-async() did pretty much the same thing as sync-code, except also using the GAsyncResult. Merge the two functions. Stopping the instance for the most part can be done entirely synchrnous. The only thing that is asynchronous, is to wait for the process to terminate. For that, add a new callback argument to nm_ppp_manager_stop(). This replaces the GAsyncResult pattern. Also, always ensure that NetworkManager runs the mainloop at least as long until the process really terminated. Currently we don't get that right, and during shutdown we just stop iterating the mainloop. However, fix this from point of view of NMPPPManager and register a wait-object, that later will correctly delay shutdown. Also, NMDeviceWwan cared to wait (asynchronously) until pppd really terminated. Keep that functionality. nm_ppp_manager_stop() returns a handle that can be used to cancel the asynchrounous request and invoke the callback right away. However note, that even when cancelling the request, the wait-object that prevents shutdown of NetworkManager is kept around, so that we can be sure to properly clean up.
Diffstat (limited to 'src/devices/adsl')
-rw-r--r--src/devices/adsl/nm-device-adsl.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/devices/adsl/nm-device-adsl.c b/src/devices/adsl/nm-device-adsl.c
index 5fcc823a20..1450a8369d 100644
--- a/src/devices/adsl/nm-device-adsl.c
+++ b/src/devices/adsl/nm-device-adsl.c
@@ -525,7 +525,7 @@ adsl_cleanup (NMDeviceAdsl *self)
if (priv->ppp_manager) {
g_signal_handlers_disconnect_by_func (priv->ppp_manager, G_CALLBACK (ppp_state_changed), self);
g_signal_handlers_disconnect_by_func (priv->ppp_manager, G_CALLBACK (ppp_ip4_config), self);
- nm_ppp_manager_stop_sync (priv->ppp_manager);
+ nm_ppp_manager_stop (priv->ppp_manager, NULL, NULL);
g_clear_object (&priv->ppp_manager);
}