mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-28 07:01:07 +00:00
Handle ipv6 addresses in the sent-by Via: field.
This change fixes a regression in via header parsing and ipv6 handling. (closes issue #18951) git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@318720 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -2302,8 +2302,9 @@ struct sip_via *parse_via(const char *header)
|
|||||||
}
|
}
|
||||||
v->sent_by = ast_skip_blanks(v->sent_by);
|
v->sent_by = ast_skip_blanks(v->sent_by);
|
||||||
|
|
||||||
/* store the port */
|
/* store the port, we have to handle ipv6 addresses containing ':'
|
||||||
if ((parm = strchr(v->sent_by, ':'))) {
|
* characters gracefully */
|
||||||
|
if (((parm = strchr(v->sent_by, ']')) && *(++parm) == ':') || (parm = strchr(v->sent_by, ':'))) {
|
||||||
char *endptr;
|
char *endptr;
|
||||||
|
|
||||||
v->port = strtol(++parm, &endptr, 10);
|
v->port = strtol(++parm, &endptr, 10);
|
||||||
@@ -2389,6 +2390,13 @@ AST_TEST_DEFINE(parse_via_test)
|
|||||||
.expected_maddr = "224.0.0.1",
|
.expected_maddr = "224.0.0.1",
|
||||||
.expected_ttl = 1,
|
.expected_ttl = 1,
|
||||||
};
|
};
|
||||||
|
struct testdata t7 = {
|
||||||
|
.in = "SIP/2.0/UDP [::1]:5060",
|
||||||
|
.expected_protocol = "SIP/2.0/UDP",
|
||||||
|
.expected_sent_by = "[::1]:5060",
|
||||||
|
.expected_port = 5060,
|
||||||
|
.expected_branch = "",
|
||||||
|
};
|
||||||
switch (cmd) {
|
switch (cmd) {
|
||||||
case TEST_INIT:
|
case TEST_INIT:
|
||||||
info->name = "parse_via_test";
|
info->name = "parse_via_test";
|
||||||
@@ -2408,6 +2416,7 @@ AST_TEST_DEFINE(parse_via_test)
|
|||||||
AST_LIST_INSERT_TAIL(&testdatalist, &t4, list);
|
AST_LIST_INSERT_TAIL(&testdatalist, &t4, list);
|
||||||
AST_LIST_INSERT_TAIL(&testdatalist, &t5, list);
|
AST_LIST_INSERT_TAIL(&testdatalist, &t5, list);
|
||||||
AST_LIST_INSERT_TAIL(&testdatalist, &t6, list);
|
AST_LIST_INSERT_TAIL(&testdatalist, &t6, list);
|
||||||
|
AST_LIST_INSERT_TAIL(&testdatalist, &t7, list);
|
||||||
|
|
||||||
|
|
||||||
AST_LIST_TRAVERSE(&testdatalist, testdataptr, list) {
|
AST_LIST_TRAVERSE(&testdatalist, testdataptr, list) {
|
||||||
|
|||||||
Reference in New Issue
Block a user