Module: sems Branch: master Commit: e9f988c35281708b03130ddf902275ff906d3f62 URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sems/?a=commit;h=e9f988c35281708b03130ddf902275ff906d3f62
Author: Alena Zhuchek <[email protected]> Committer: Alena Zhuchek <[email protected]> Date: Mon Aug 13 14:01:05 2012 +0200 b/f: parsing issue in AmUriParser when dealing with parameters in the username part (bug # 81) patch by tsearle --- core/AmUriParser.cpp | 16 +++++----------- 1 files changed, 5 insertions(+), 11 deletions(-) diff --git a/core/AmUriParser.cpp b/core/AmUriParser.cpp index 56a8827..6e5acd0 100644 --- a/core/AmUriParser.cpp +++ b/core/AmUriParser.cpp @@ -184,7 +184,7 @@ static inline int skip_uri(const string& s, unsigned int pos) enum { uS0= 0, // start uSPROT, // protocol - uSUHOST, // user / host + uSUSER, // user uSHOST, // host uSHOSTWSP, // wsp after host uSPORT, // port @@ -220,24 +220,18 @@ bool AmUriParser::parse_uri() { if ((eq<=4)&&(toupper(c) ==sip_prot[eq])) eq++; if (eq==4) { // found sip: - st = uSUHOST; p1 = pos; + uri.find('@', pos+1) == string::npos? st = uSHOST : st = uSUSER; p1 = pos; }; } break; }; } break; case uSPROT: { - if (c == ':') { st = uSUHOST; p1 = pos;} + if (c == ':') { uri.find('@', pos+1) == string::npos? st = uSHOST : st = uSUSER; p1 = pos;} } break; - case uSUHOST: { + case uSUSER: { switch(c) { case '@': { uri_user = uri.substr(p1+1, pos-p1-1); st = uSHOST; p1 = pos; }; break; - case ':': { uri_host = uri.substr(p1+1, pos-p1-1); - st = uSPORT; p1 = pos; }; break; - case '?': { uri_host = uri.substr(p1+1, pos-p1-1); - st = uSHDR; p1 = pos; }; break; - case ';': { uri_host = uri.substr(p1+1, pos-p1-1); - st = uSPARAM;p1 = pos; }; break; case '>': { uri_host = uri.substr(p1+1, pos-p1-1); st = uS6; p1 = pos; }; break; }; @@ -325,7 +319,7 @@ bool AmUriParser::parse_uri() { pos++; } switch(st) { - case uSUHOST: + case uSUSER: case uSHOST: uri_host = uri.substr(p1+1, pos-p1-1); break; case uSPORT: uri_port = uri.substr(p1+1, pos-p1-1); break; case uSHDR: uri_headers = uri.substr(p1+1, pos-p1-1); break; _______________________________________________ Semsdev mailing list [email protected] http://lists.iptel.org/mailman/listinfo/semsdev
