aboutsummaryrefslogtreecommitdiff
path: root/dependencies/nDPIsrvd.h
diff options
context:
space:
mode:
authorToni Uhlig <matzeton@googlemail.com>2020-11-13 19:49:15 +0100
committerToni Uhlig <matzeton@googlemail.com>2020-11-13 19:55:54 +0100
commita03e0c8ba8c9230a3890d6fbd813fcf051086e7f (patch)
tree9ff50e41fb0720ad75332993cd54defba137237c /dependencies/nDPIsrvd.h
parentaac0e77a2c050995f921e39e9927098c5f7054a4 (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.h17
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,