summaryrefslogtreecommitdiff
path: root/src/gsmd/usock.c
diff options
context:
space:
mode:
authortick <tick@99fdad57-331a-0410-800a-d7fa5415bdb3>2007-10-31 06:40:26 +0000
committertick <tick@99fdad57-331a-0410-800a-d7fa5415bdb3>2007-10-31 06:40:26 +0000
commitf97ac00fa6380439a21b996ae12042187552d6af (patch)
treec46c0ea1c09f32fdcd6fe28fb88e5fdbf3128cae /src/gsmd/usock.c
parent894fcad7ad2ac79d4a8478e86826202974d37873 (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.c10
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)
personal git repositories of Harald Welte. Your mileage may vary