From 329f2d724b25cd934dc834a3cac9c7b12dbb2df9 Mon Sep 17 00:00:00 2001 From: Denis Kenzior Date: Mon, 11 Jul 2011 15:51:34 -0500 Subject: gatserver: fix certain bad behavior Due to the new GAtIO semantics, the receive function is called immediately if the receive buffer is not empty. This caused certain funny behavior in non-command (e.g. empty, a/) processing. --- gatchat/gatserver.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'gatchat/gatserver.c') diff --git a/gatchat/gatserver.c b/gatchat/gatserver.c index 3a996cb5..ab785f7e 100644 --- a/gatchat/gatserver.c +++ b/gatchat/gatserver.c @@ -1055,13 +1055,13 @@ static void new_bytes(struct ring_buffer *rbuf, gpointer user_data) case PARSER_RESULT_REPEAT_LAST: p->cur_pos = 0; + ring_buffer_drain(rbuf, p->read_so_far); if (p->last_line) server_parse_line(p); else g_at_server_send_final(p, G_AT_SERVER_RESULT_OK); - ring_buffer_drain(rbuf, p->read_so_far); break; default: @@ -1179,6 +1179,9 @@ static void server_wakeup_writer(GAtServer *server) static void server_resume(GAtServer *server) { + if (server->suspended == FALSE) + return; + server->suspended = FALSE; g_at_io_set_read_handler(server->io, new_bytes, server); } -- cgit v1.2.3