浏览代码

core/parser: handle the case when username field in auth header has proto scheme

- some phones put there "sip:username@domain", so far it was handling
  "username" and "username@domain"
Daniel-Constantin Mierla 11 年之前
父节点
当前提交
e56ff0e6a5
共有 1 个文件被更改,包括 8 次插入0 次删除
  1. 8 0
      parser/digest/digest_parser.c

+ 8 - 0
parser/digest/digest_parser.c

@@ -275,6 +275,7 @@ static inline void parse_username(struct username* _u)
 	_u->user = _u->whole;
 	if (_u->whole.len <= 2) return;
 
+	/* get domain - it can be: username@domain */
 	d = q_memchr(_u->whole.s, '@', _u->whole.len);
 
 	if (d) {
@@ -282,6 +283,13 @@ static inline void parse_username(struct username* _u)
 		_u->domain.len = _u->whole.len - (d - _u->whole.s) - 1;
 		_u->user.len = d - _u->user.s;
 	}
+
+	/* get user - it can be: sip:username@domain */
+	d = q_memchr(_u->user.s, ':', _u->user.len);
+	if (d) {
+		_u->user.len = _u->user.s + _u->user.len - d - 1;
+		_u->user.s = d + 1;
+	}
 }