diff options
author | tick <tick@99fdad57-331a-0410-800a-d7fa5415bdb3> | 2007-10-31 06:40:26 +0000 |
---|---|---|
committer | tick <tick@99fdad57-331a-0410-800a-d7fa5415bdb3> | 2007-10-31 06:40:26 +0000 |
commit | f97ac00fa6380439a21b996ae12042187552d6af (patch) | |
tree | c46c0ea1c09f32fdcd6fe28fb88e5fdbf3128cae /src/gsmd/usock.c | |
parent | 894fcad7ad2ac79d4a8478e86826202974d37873 (diff) |
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
Diffstat (limited to 'src/gsmd/usock.c')
-rw-r--r-- | src/gsmd/usock.c | 10 |
1 files changed, 8 insertions, 2 deletions
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) |