allow peers without port

The default port is then used
This commit is contained in:
moneromooo-monero 2016-07-03 12:51:12 +01:00
parent de91bb75a1
commit c2ad9caf01
No known key found for this signature in database
GPG key ID: 686F07454D6CEFC3
2 changed files with 14 additions and 4 deletions

View file

@ -350,19 +350,24 @@ POP_WARNINGS
{ {
//parse ip and address //parse ip and address
std::string::size_type p = addres.find(':'); std::string::size_type p = addres.find(':');
std::string ip_str, port_str;
if(p == std::string::npos) if(p == std::string::npos)
{ {
return false; port = 0;
ip_str = addres;
}
else
{
ip_str = addres.substr(0, p);
port_str = addres.substr(p+1, addres.size());
} }
std::string ip_str = addres.substr(0, p);
std::string port_str = addres.substr(p+1, addres.size());
if(!get_ip_int32_from_string(ip, ip_str)) if(!get_ip_int32_from_string(ip, ip_str))
{ {
return false; return false;
} }
if(!get_xtype_from_string(port, port_str)) if(p != std::string::npos && !get_xtype_from_string(port, port_str))
{ {
return false; return false;
} }

View file

@ -262,6 +262,8 @@ namespace nodetool
pe.id = crypto::rand<uint64_t>(); pe.id = crypto::rand<uint64_t>();
bool r = parse_peer_from_string(pe.adr, pr_str); bool r = parse_peer_from_string(pe.adr, pr_str);
CHECK_AND_ASSERT_MES(r, false, "Failed to parse address from string: " << pr_str); CHECK_AND_ASSERT_MES(r, false, "Failed to parse address from string: " << pr_str);
if (pe.adr.port == 0)
pe.adr.port = testnet ? ::config::testnet::P2P_DEFAULT_PORT : ::config::P2P_DEFAULT_PORT;
m_command_line_peers.push_back(pe); m_command_line_peers.push_back(pe);
} }
} }
@ -1505,12 +1507,15 @@ namespace nodetool
bool node_server<t_payload_net_handler>::parse_peers_and_add_to_container(const boost::program_options::variables_map& vm, const command_line::arg_descriptor<std::vector<std::string> > & arg, Container& container) bool node_server<t_payload_net_handler>::parse_peers_and_add_to_container(const boost::program_options::variables_map& vm, const command_line::arg_descriptor<std::vector<std::string> > & arg, Container& container)
{ {
std::vector<std::string> perrs = command_line::get_arg(vm, arg); std::vector<std::string> perrs = command_line::get_arg(vm, arg);
bool testnet = command_line::get_arg(vm, command_line::arg_testnet_on);
for(const std::string& pr_str: perrs) for(const std::string& pr_str: perrs)
{ {
nodetool::net_address na = AUTO_VAL_INIT(na); nodetool::net_address na = AUTO_VAL_INIT(na);
bool r = parse_peer_from_string(na, pr_str); bool r = parse_peer_from_string(na, pr_str);
CHECK_AND_ASSERT_MES(r, false, "Failed to parse address from string: " << pr_str); CHECK_AND_ASSERT_MES(r, false, "Failed to parse address from string: " << pr_str);
if (na.port == 0)
na.port = testnet ? ::config::testnet::P2P_DEFAULT_PORT : ::config::P2P_DEFAULT_PORT;
container.push_back(na); container.push_back(na);
} }