summaryrefslogtreecommitdiffstats
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
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.
-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