diff options
author | Toni Uhlig <matzeton@googlemail.com> | 2020-11-13 19:49:15 +0100 |
---|---|---|
committer | Toni Uhlig <matzeton@googlemail.com> | 2020-11-13 19:55:54 +0100 |
commit | a03e0c8ba8c9230a3890d6fbd813fcf051086e7f (patch) | |
tree | 9ff50e41fb0720ad75332993cd54defba137237c /dependencies/nDPIsrvd.h | |
parent | aac0e77a2c050995f921e39e9927098c5f7054a4 (diff) |
Fixed inconsistent callback function call if a token parsed.
Signed-off-by: Toni Uhlig <matzeton@googlemail.com>
Diffstat (limited to 'dependencies/nDPIsrvd.h')
-rw-r--r-- | dependencies/nDPIsrvd.h | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/dependencies/nDPIsrvd.h b/dependencies/nDPIsrvd.h index 320fdac08..4889abfa9 100644 --- a/dependencies/nDPIsrvd.h +++ b/dependencies/nDPIsrvd.h @@ -74,6 +74,7 @@ enum nDPIsrvd_parse_return PARSE_STRING_TOO_BIG, PARSE_INVALID_CLOSING_CHAR, PARSE_JSMN_ERROR, + PARSE_CALLBACK_ERROR, PARSE_LAST_ENUM_VALUE }; @@ -203,10 +204,24 @@ static inline enum nDPIsrvd_parse_return nDPIsrvd_parse(struct nDPIsrvd_socket * return PARSE_JSMN_ERROR; } + sock->jsmn.current_token = 0; + if (cb(sock, user_data) != CALLBACK_OK) + { + return PARSE_CALLBACK_ERROR; + } + for (sock->jsmn.current_token = 1; sock->jsmn.current_token < sock->jsmn.tokens_found; sock->jsmn.current_token++) { - cb(sock, user_data); + if (cb(sock, user_data) != CALLBACK_OK) + { + return PARSE_CALLBACK_ERROR; + } + } + + if (cb(sock, user_data) != CALLBACK_OK) + { + return PARSE_CALLBACK_ERROR; } memmove(sock->buffer.raw, |