blob: 6f082dc26ba64f218eeb01d9663cee090b5500df (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
#include <error.h>
#include <sys/time.h>
#include <poll.h>
#define TORRENT_USERDATA struct dht * dht;
#define DHT_USERDATA struct pollfd ** pollfds; size_t * pollfds_size; nfds_t * nfds;
#include <dht.c>
#define S0(x) (x ? x : "")
int we_have_disconnected = 0;
#define DISCONNECTION_MIXIN_BOTTOM we_have_disconnected++;
#include <tcp.c>
int main (int argc, char ** argv) {
if (argc != 1+3)
error_at_line(1, 0, __FILE__, __LINE__, "%s infohash ipv6 port", S0(argv[0]));
struct dht * dht = dht_init(NULL);
nfds_t nfds = 0;
size_t pollfds_size = 1;
struct pollfd * pollfds = malloc(sizeof *pollfds);
dht->nfds = &nfds;
dht->pollfds_size = &pollfds_size;
dht->pollfds = &pollfds;
dht->connection = connection;
dht->verbosity |= incoming_dht | outgoing_dht | expected | debug;
dht->torrents = torrent_init();
hex2bin(dht->torrents->hash, argv[1], 20);
dht->torrents->type = info;
dht->torrents->peers = peer_init();
inet_pton(AF_INET6, argv[2], dht->torrents->peers->addr.sin6_addr.s6_addr);
dht->torrents->peers->addr.sin6_port = htons(atoi(argv[3]));
periodic(dht);
while (!we_have_disconnected && poll(*dht->pollfds, *dht->nfds, -1) != -1)
tcp_work(dht);
dht_free(dht);
}
|