mirror of
https://github.com/cesanta/mongoose.git
synced 2026-10-24 11:54:49 +00:00
fix mg_aton not setting is_ip6 with scope_ids
This commit is contained in:
1 parent
17ff656a7d
commit
d6e7f8ee83
3 files changed
+20
-10
No files matched your search
@@ -86,7 +86,7 @@ static bool mg_aton6(struct mg_str str, struct mg_addr *addr) {
|
||||
size_t i, j = 0, n = 0, dc = 42;
|
||||
addr->scope_id = 0;
|
||||
if (str.len > 2 && str.buf[0] == '[') str.buf++, str.len -= 2;
|
||||
if (mg_v4mapped(str, addr)) return true;
|
||||
if (mg_v4mapped(str, addr)) return true; // sets addr->is_ip6
|
||||
for (i = 0; i < str.len; i++) {
|
||||
if ((str.buf[i] >= '0' && str.buf[i] <= '9') ||
|
||||
(str.buf[i] >= 'a' && str.buf[i] <= 'f') ||
|
||||
@@ -108,8 +108,13 @@ static bool mg_aton6(struct mg_str str, struct mg_addr *addr) {
|
||||
if (n > 14) return false;
|
||||
addr->ip[n] = addr->ip[n + 1] = 0; // For trailing ::
|
||||
} else if (str.buf[i] == '%') { // Scope ID, last in string
|
||||
return mg_str_to_num(mg_str_n(&str.buf[i + 1], str.len - i - 1), 10,
|
||||
&addr->scope_id, sizeof(uint8_t));
|
||||
if (mg_str_to_num(mg_str_n(&str.buf[i + 1], str.len - i - 1), 10,
|
||||
&addr->scope_id, sizeof(uint8_t))) {
|
||||
addr->is_ip6 = true;
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user