Check for port config before addr config in client port options

Otherwise, we'll fail, since "9050" looks like a perfectly fine address.
This commit is contained in:
Nick Mathewson 2011-07-20 13:40:09 -04:00
parent 6fa99ab32f
commit e05ddf3e18

View File

@ -5039,6 +5039,12 @@ parse_client_port_config(smartlist_t *out,
tor_free(addrtmp); tor_free(addrtmp);
goto err; goto err;
} }
} else {
/* Try parsing integer port before address, because, who knows?
"9050" might be a valid address. */
port = (int) tor_parse_long(addrport, 10, 0, 65535, &ok, NULL);
if (ok) {
tor_addr_from_str(&addr, defaultaddr);
} else if (tor_addr_port_parse(addrport, &addr, &ptmp) == 0) { } else if (tor_addr_port_parse(addrport, &addr, &ptmp) == 0) {
if (ptmp == 0) { if (ptmp == 0) {
log_warn(LD_CONFIG, "%sPort line has address but no port", portname); log_warn(LD_CONFIG, "%sPort line has address but no port", portname);
@ -5046,13 +5052,10 @@ parse_client_port_config(smartlist_t *out,
} }
port = ptmp; port = ptmp;
} else { } else {
port = (int) tor_parse_long(addrport, 10, 0, 65535, &ok, NULL);
if (!ok) {
log_warn(LD_CONFIG, "Couldn't parse address '%s' for %sPort", log_warn(LD_CONFIG, "Couldn't parse address '%s' for %sPort",
escaped(addrport), portname); escaped(addrport), portname);
goto err; goto err;
} }
tor_addr_from_str(&addr, defaultaddr);
} }
/* Now parse the rest of the options, if any. */ /* Now parse the rest of the options, if any. */