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.
This commit is contained in:
Zhenhua Zhang 2010-02-02 21:23:22 +08:00 committed by Denis Kenzior
parent ae25d1e910
commit 2a58101807
1 changed files with 5 additions and 15 deletions

View File

@ -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;