mirror of
https://github.com/savoirfairelinux/opendht.git
synced 2026-11-08 04:21:51 +00:00
dhtrunner: add bootstrap from host and service strings
This commit is contained in:
1 parent
66dcc893f0
commit
30d5ad5f33
5 files changed
+34
-53
No files matched your search
+4
-26
@@ -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;
|
||||
|
||||
Reference in new issue
Block a user