From b48e610314fb466035b198f594c5b6a68126fcf1 Mon Sep 17 00:00:00 2001 From: Dmitriy Paliy Date: Tue, 27 Sep 2011 13:22:44 +0300 Subject: [PATCH] Fix error handling in start_dtmf_reply If csd replyed with error to StartDTMF, then StopDTMF method call is not sent. --- audio/telephony-maemo6.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/audio/telephony-maemo6.c b/audio/telephony-maemo6.c index 31ac96909..e569e501d 100644 --- a/audio/telephony-maemo6.c +++ b/audio/telephony-maemo6.c @@ -734,10 +734,25 @@ void telephony_dial_number_req(void *telephony_device, const char *number) static void start_dtmf_reply(DBusPendingCall *call, void *user_data) { - send_method_call(CSD_CALL_BUS_NAME, CSD_CALL_PATH, + DBusError err; + DBusMessage *reply; + + reply = dbus_pending_call_steal_reply(call); + + dbus_error_init(&err); + if (dbus_set_error_from_message(&err, reply)) { + error("csd replied with an error: %s, %s", + err.name, err.message); + + dbus_error_free(&err); + } else + send_method_call(CSD_CALL_BUS_NAME, CSD_CALL_PATH, CSD_CALL_INTERFACE, "StopDTMF", NULL, NULL, DBUS_TYPE_INVALID); + + dbus_message_unref(reply); + dbus_pending_call_unref(call); } static void start_dtmf(void *telephony_device, char tone) -- 2.11.0