From d43fde3c5e6165b8a977c8917c11e4d1a55eac3f Mon Sep 17 00:00:00 2001 From: Alexander Couzens Date: Tue, 25 Jul 2017 16:43:03 +0200 Subject: [PATCH] voicecall: prefer release_specific() over hang_up_active/hangup_all release_specific() has the call_id as parameter in difference to the more unspecific calls hangup_all and hangup_active. --- src/voicecall.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/voicecall.c b/src/voicecall.c index e3ae80cf..65d4f94f 100644 --- a/src/voicecall.c +++ b/src/voicecall.c @@ -542,10 +542,18 @@ static DBusMessage *voicecall_hangup(DBusConnection *conn, if (vc->dial_req && vc->dial_req->call != v) return __ofono_error_busy(msg); - switch (call->status) { - case CALL_STATUS_DISCONNECTED: + if (call->status == CALL_STATUS_DISCONNECTED) return __ofono_error_failed(msg); + if (vc->driver->release_specific) { + vc->pending = dbus_message_ref(msg); + vc->driver->release_specific(vc, call->id, + generic_callback, vc); + + return NULL; + } + + switch (call->status) { case CALL_STATUS_INCOMING: if (vc->driver->hangup_all == NULL && vc->driver->hangup_active == NULL) @@ -615,14 +623,7 @@ static DBusMessage *voicecall_hangup(DBusConnection *conn, break; } - if (vc->driver->release_specific == NULL) - return __ofono_error_not_implemented(msg); - - vc->pending = dbus_message_ref(msg); - vc->driver->release_specific(vc, call->id, - generic_callback, vc); - - return NULL; + return __ofono_error_not_implemented(msg); } static DBusMessage *voicecall_answer(DBusConnection *conn,