stk: Fix User Cancel response to Set Up Call

One of the clean-up commits changed the semantics of the dial request
callback's parameter (NULL if call setup failed, non-NULL if success
or user cancelled).
This commit is contained in:
Andrzej Zaborowski 2010-09-08 19:16:03 +02:00 committed by Denis Kenzior
parent c47b365870
commit 52161db428
2 changed files with 15 additions and 1 deletions

View File

@ -1412,7 +1412,7 @@ static void call_setup_connected(struct ofono_call *call, void *data)
static struct ofono_error error = { .type = OFONO_ERROR_TYPE_FAILURE };
static unsigned char facility_rejected_result[] = { 0x9d };
if (!call) {
if (!call || call->status == CALL_STATUS_DISCONNECTED) {
memset(&rsp, 0, sizeof(rsp));
rsp.result.type = STK_RESULT_TYPE_NETWORK_UNAVAILABLE;

View File

@ -331,6 +331,16 @@ static DBusMessage *voicecall_deflect(DBusConnection *conn,
return NULL;
}
static void dial_request_user_cancel(struct ofono_voicecall *vc,
struct voicecall *call)
{
if (!vc->dial_req)
return;
if (!call || call == vc->dial_req->call)
dial_request_finish(vc->dial_req->call->vc, TRUE);
}
static DBusMessage *voicecall_hangup(DBusConnection *conn,
DBusMessage *msg, void *data)
{
@ -342,6 +352,8 @@ static DBusMessage *voicecall_hangup(DBusConnection *conn,
if (vc->pending)
return __ofono_error_busy(msg);
dial_request_user_cancel(vc, v);
switch (call->status) {
case CALL_STATUS_DISCONNECTED:
return __ofono_error_failed(msg);
@ -1253,6 +1265,8 @@ static DBusMessage *manager_hangup_all(DBusConnection *conn,
} else
vc->driver->hangup_all(vc, generic_callback, vc);
dial_request_user_cancel(vc, NULL);
return NULL;
}