summaryrefslogtreecommitdiffstats
path: root/gatchat
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2009-12-02 15:27:26 -0600
committerDenis Kenzior <denkenz@gmail.com>2009-12-02 15:27:26 -0600
commit9b5b1057e4403c8bc008f8f6d2d2cbcb04e5ed9a (patch)
tree7979e6c2eb4a0a8d58d49b86aa8401b67fe675a8 /gatchat
parent0d022d305748d05763e950a6fba9b8c1450b6143 (diff)
downloadofono-9b5b1057e4403c8bc008f8f6d2d2cbcb04e5ed9a.tar.bz2
Fix: Sometimes it is possible to cancel first cmd
Commands on the head of the queue can be canceled if none of its bytes have actually been written to the modem. This is tracked by cmd_bytes_written variable.
Diffstat (limited to 'gatchat')
-rw-r--r--gatchat/gatchat.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/gatchat/gatchat.c b/gatchat/gatchat.c
index 1dffd89a..df659066 100644
--- a/gatchat/gatchat.c
+++ b/gatchat/gatchat.c
@@ -1202,7 +1202,8 @@ gboolean g_at_chat_cancel(GAtChat *chat, guint id)
if (!l)
return FALSE;
- if (l == g_queue_peek_head(chat->command_queue)) {
+ if (l == g_queue_peek_head(chat->command_queue) &&
+ chat->cmd_bytes_written > 0) {
struct at_command *c = l->data;
/* We can't actually remove it since it is most likely