From 2a58101807f91b4425c74ba22e19cb600f61d72c Mon Sep 17 00:00:00 2001 From: Zhenhua Zhang Date: Tue, 2 Feb 2010 21:23:22 +0800 Subject: [PATCH] Fix change state immediately when meet the slash According to V.250 spec section 5.2.4 Repeating a command line, if the prefix "A/" or "a/" is received, we should execute the last command immediately. No need to meet \r. --- gatchat/gatserver.c | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/gatchat/gatserver.c b/gatchat/gatserver.c index fe5c3a82..a01ded63 100644 --- a/gatchat/gatserver.c +++ b/gatchat/gatserver.c @@ -35,7 +35,6 @@ enum ParserState { PARSER_STATE_IDLE, PARSER_STATE_A, - PARSER_STATE_SLASH, PARSER_STATE_COMMAND, PARSER_STATE_GARBAGE, }; @@ -214,22 +213,14 @@ static enum ParserResult server_feed(GAtServer *server, i += 1; res = PARSER_RESULT_GARBAGE; goto out; - } else if (byte == '/') - server->parser_state = PARSER_STATE_SLASH; - else if (byte == 'T' || byte == 't') - server->parser_state = PARSER_STATE_COMMAND; - else - server->parser_state = PARSER_STATE_GARBAGE; - - break; - - case PARSER_STATE_SLASH: - if (byte == s3) { + } else if (byte == '/') { server->parser_state = PARSER_STATE_IDLE; - i+= 1; + i += 1; res = PARSER_RESULT_REPEAT_LAST; goto out; - } else if (byte != ' ' && byte != '\t') + } else if (byte == 'T' || byte == 't') + server->parser_state = PARSER_STATE_COMMAND; + else server->parser_state = PARSER_STATE_GARBAGE; break; @@ -246,7 +237,6 @@ static enum ParserResult server_feed(GAtServer *server, case PARSER_STATE_GARBAGE: if (byte == s3) { server->parser_state = PARSER_STATE_IDLE; - i += 1; res = PARSER_RESULT_GARBAGE; goto out;