dhtrunner: add bootstrap from host and service strings

This commit is contained in:
Adrien Béraud committed 2015-03-29 13:09:36 -04:00
1 parent 66dcc893f0
commit 30d5ad5f33
5 files changed
+34 -53

No files matched your search

+4 -26
View File
@@ -99,31 +99,6 @@ main(int argc, char **argv)
if (!port)
port = 4222;
std::vector<std::pair<sockaddr_storage, socklen_t>> bootstrap_nodes {};
while (i < argc) {
addrinfo hints;
memset(&hints, 0, sizeof(hints));
addrinfo *info = nullptr, *infop = nullptr;
hints.ai_socktype = SOCK_DGRAM;
int rc = getaddrinfo(argv[i], argv[i + 1], &hints, &info);
if(rc != 0)
throw std::invalid_argument(std::string("getaddrinfo: ") + gai_strerror(rc));
i++;
if(i >= argc)
break;
infop = info;
while (infop) {
sockaddr_storage tmp;
std::copy_n((uint8_t*)infop->ai_addr, infop->ai_addrlen, (uint8_t*)&tmp);
bootstrap_nodes.emplace_back(tmp, infop->ai_addrlen);
infop = infop->ai_next;
}
freeaddrinfo(info);
i++;
}
int rc = gnutls_global_init();
if (rc != GNUTLS_E_SUCCESS)
throw std::runtime_error(std::string("Error initializing GnuTLS: ")+gnutls_strerror(rc));
@@ -135,7 +110,10 @@ main(int argc, char **argv)
dht.run(port, crt_tmp, true, [](dht::Dht::Status /* ipv4 */, dht::Dht::Status /* ipv6 */) {
});
dht.bootstrap(bootstrap_nodes);
while (i+1 < argc) {
dht.bootstrap(argv[i], argv[i + 1]);
i += 2;
}
std::cout << "OpenDht node " << dht.getRoutingId() << " running on port " << port<< std::endl;
std::cout << "Public key ID " << dht.getId() << std::endl;