aboutsummaryrefslogtreecommitdiff
path: root/src/mm-broadband-bearer.c
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2019-12-02 13:07:23 +0100
committerAleksander Morgado <aleksander@aleksander.es>2019-12-03 08:56:47 +0000
commit76cafbb603599a9f19592daca50e00c6e960998e (patch)
tree106af203ad36fbfd5259cc4eb51002ae0e24e594 /src/mm-broadband-bearer.c
parent991e615736c1b467d7ab7041f0475297e6ef86d2 (diff)
bearer: avoid reporting disconnection error if already disconnected
When we try to disconnect a bearer and the bearer is already disconnected (e.g. after a cancelled connection attempt), avoid reporting that as an error: <warn> [1575287560.433398] Error disconnecting bearer '/org/freedesktop/ModemManager1/Bearer/0': 'Couldn't disconnect QMI bearer: this bearer is not connected'. Will assume disconnected anyway.
Diffstat (limited to 'src/mm-broadband-bearer.c')
-rw-r--r--src/mm-broadband-bearer.c28
1 files changed, 10 insertions, 18 deletions
diff --git a/src/mm-broadband-bearer.c b/src/mm-broadband-bearer.c
index cce1fb45..2d3cafd5 100644
--- a/src/mm-broadband-bearer.c
+++ b/src/mm-broadband-bearer.c
@@ -1805,15 +1805,12 @@ disconnect (MMBaseBearer *self,
MMBaseModem *modem = NULL;
GTask *task;
+ task = g_task_new (self, NULL, callback, user_data);
+
if (!MM_BROADBAND_BEARER (self)->priv->port) {
- g_task_report_new_error (
- self,
- callback,
- user_data,
- disconnect,
- MM_CORE_ERROR,
- MM_CORE_ERROR_FAILED,
- "Couldn't disconnect: this bearer is not connected");
+ mm_dbg ("No need to disconnect: bearer is already disconnected");
+ g_task_return_boolean (task, TRUE);
+ g_object_unref (task);
return;
}
@@ -1825,20 +1822,15 @@ disconnect (MMBaseBearer *self,
/* We need the primary port to disconnect... */
primary = mm_base_modem_peek_port_primary (modem);
if (!primary) {
- g_task_report_new_error (
- self,
- callback,
- user_data,
- disconnect,
- MM_CORE_ERROR,
- MM_CORE_ERROR_FAILED,
- "Couldn't disconnect: couldn't get primary port");
+ g_task_return_new_error (task,
+ MM_CORE_ERROR,
+ MM_CORE_ERROR_FAILED,
+ "Couldn't disconnect: couldn't get primary port");
+ g_object_unref (task);
g_object_unref (modem);
return;
}
- task = g_task_new (self, NULL, callback , user_data);
-
switch (MM_BROADBAND_BEARER (self)->priv->connection_type) {
case CONNECTION_TYPE_3GPP:
MM_BROADBAND_BEARER_GET_CLASS (self)->disconnect_3gpp (