wireaddr: correct the onion case in wireaddr_from_hostname
And, this time, add tests !
This commit is contained in:
parent
fad133ed2e
commit
48fde4f0a5
|
@ -40,6 +40,7 @@ int main(void)
|
|||
setup_locale();
|
||||
|
||||
struct wireaddr addr;
|
||||
struct wireaddr *addresses = tal_arr(NULL, struct wireaddr, 0);
|
||||
char *ip;
|
||||
u16 port;
|
||||
|
||||
|
@ -104,7 +105,7 @@ int main(void)
|
|||
assert(parse_wireaddr("[::ffff:127.0.0.1]:49150", &addr, 1, false, NULL));
|
||||
assert(addr.port == 49150);
|
||||
|
||||
assert(parse_wireaddr("4ruvswpqec5i2gogopxl4vm5bruzknbvbylov2awbo4rxiq4cimdldad.onion:49150", &addr, 1, false, NULL));
|
||||
assert(parse_wireaddr("4ruvswpqec5i2gogopxl4vm5bruzknbvbylov2awbo4rxiq4cimdldad.onion:49150", &addr, 1, false, NULL));
|
||||
assert(addr.port == 49150);
|
||||
|
||||
assert(parse_wireaddr("4ruvswpqec5i2gogopxl4vm5bruzknbvbylov2awbo4rxiq4cimdldad.onion", &addr, 1, false, NULL));
|
||||
|
@ -115,6 +116,11 @@ int main(void)
|
|||
|
||||
assert(parse_wireaddr("odpzvneidqdf5hdq.onion", &addr, 1, false, NULL));
|
||||
assert(addr.port == 1);
|
||||
|
||||
assert(wireaddr_from_hostname(&addresses, "odpzvneidqdf5hdq.onion", 1, NULL, NULL, NULL));
|
||||
assert(! wireaddr_from_hostname(&addresses, "aaa.onion", 1, NULL, NULL, NULL));
|
||||
tal_free(addresses);
|
||||
|
||||
tal_free(tmpctx);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -308,19 +308,21 @@ bool wireaddr_from_hostname(struct wireaddr **addrs, const char *hostname,
|
|||
if (strends(hostname, ".onion")) {
|
||||
u8 *dec = b32_decode(tmpctx, hostname,
|
||||
strlen(hostname) - strlen(".onion"));
|
||||
if (tal_count(*addrs) == 0)
|
||||
tal_resize(addrs, 1);
|
||||
if (tal_count(dec) == TOR_V2_ADDRLEN)
|
||||
addrs[0]->type = ADDR_TYPE_TOR_V2;
|
||||
(*addrs)[0].type = ADDR_TYPE_TOR_V2;
|
||||
else if (tal_count(dec) == TOR_V3_ADDRLEN)
|
||||
addrs[0]->type = ADDR_TYPE_TOR_V3;
|
||||
(*addrs)[0].type = ADDR_TYPE_TOR_V3;
|
||||
else {
|
||||
if (err_msg)
|
||||
*err_msg = "Invalid Tor address";
|
||||
return false;
|
||||
}
|
||||
|
||||
addrs[0]->addrlen = tal_count(dec);
|
||||
addrs[0]->port = port;
|
||||
memcpy(&addrs[0]->addr, dec, tal_count(dec));
|
||||
(*addrs)[0].addrlen = tal_count(dec);
|
||||
(*addrs)[0].port = port;
|
||||
memcpy((*addrs)[0].addr, dec, tal_count(dec));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue