summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZhenhua Zhang <zhenhua.zhang@intel.com>2010-02-02 21:23:22 +0800
committerDenis Kenzior <denkenz@gmail.com>2010-02-02 11:31:23 -0600
commit2a58101807f91b4425c74ba22e19cb600f61d72c (patch)
tree168bc5e2b5abdb95634574de8ee673b4095dd4f1
parentae25d1e91089b0fd73fd22692aaa81889425aa93 (diff)
downloadofono-2a58101807f91b4425c74ba22e19cb600f61d72c.tar.bz2
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.
-rw-r--r--gatchat/gatserver.c20
1 files 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;