From f97ac00fa6380439a21b996ae12042187552d6af Mon Sep 17 00:00:00 2001 From: tick Date: Wed, 31 Oct 2007 06:40:26 +0000 Subject: gsmd: Fix the bug 928, that user cannot hang up call/cancel_atcmd until a call is connected.(Andrzej Zaborowski) git-svn-id: http://svn.openmoko.org/trunk/src/target/gsm@3307 99fdad57-331a-0410-800a-d7fa5415bdb3 --- src/gsmd/usock.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src/gsmd/usock.c') diff --git a/src/gsmd/usock.c b/src/gsmd/usock.c index a53c8a1..a07fd6f 100644 --- a/src/gsmd/usock.c +++ b/src/gsmd/usock.c @@ -135,7 +135,13 @@ static int usock_rcv_voicecall(struct gsmd_user *gu, struct gsmd_msg_hdr *gph, break; case GSMD_VOICECALL_HANGUP: /* ATH0 is not supported by QC, we hope ATH is supported by everone */ - cmd = atcmd_fill("ATH", 5, &usock_cmd_cb, gu, gph->id); + cmd = atcmd_fill("ATH", 4, &usock_cmd_cb, gu, gph->id); + + /* This command is special because it needs to be sent to + * the MS even if a command is currently executing. */ + if (cmd) { + return cancel_atcmd(gu->gsmd, cmd); + } break; case GSMD_VOICECALL_ANSWER: cmd = atcmd_fill("ATA", 4, &usock_cmd_cb, gu, gph->id); @@ -167,7 +173,7 @@ static int usock_rcv_voicecall(struct gsmd_user *gu, struct gsmd_msg_hdr *gph, if (cmd) return atcmd_submit(gu->gsmd, cmd); else - return 0; + return -ENOMEM; } static int null_cmd_cb(struct gsmd_atcmd *cmd, void *ctx, char *resp) -- cgit v1.2.3