X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/e19d853bbf16b7ba8c58c71c1da488b9034e0fb3..82c7b78d7b7cf797f0663c96f44b092103802035:/stglibs/srvconf.lib/parser_check_user.cpp?ds=inline diff --git a/stglibs/srvconf.lib/parser_check_user.cpp b/stglibs/srvconf.lib/parser_check_user.cpp index 66db6cff..8c150357 100644 --- a/stglibs/srvconf.lib/parser_check_user.cpp +++ b/stglibs/srvconf.lib/parser_check_user.cpp @@ -21,8 +21,12 @@ #include "stg/parser_check_user.h" +#include + #include +using namespace STG; + PARSER_CHECK_USER::PARSER_CHECK_USER() : callback(NULL), data(NULL), @@ -30,7 +34,7 @@ PARSER_CHECK_USER::PARSER_CHECK_USER() { } //----------------------------------------------------------------------------- -int PARSER_CHECK_USER::ParseStart(const char *el, const char **attr) +int PARSER_CHECK_USER::ParseStart(const char * el, const char ** attr) { depth++; if (depth == 1) @@ -46,9 +50,12 @@ depth--; //----------------------------------------------------------------------------- void PARSER_CHECK_USER::ParseAnswer(const char *, const char **attr) { +if (!callback) + return; if (attr && attr[0] && attr[1] && strcasecmp(attr[0], "value") == 0) - if (callback) - callback(attr[1], data); + callback(strcasecmp(attr[1], "ok") == 0, attr[2] && attr[3] ? attr[3] : "", data); +else + callback(false, "Invalid response.", data); } //----------------------------------------------------------------------------- void PARSER_CHECK_USER::SetCallback(CALLBACK f, void * d)