Explorar el Código

Better start from scratch on udp tracker support.

master
Richard Nyberg hace 15 años
padre
commit
5aaf5be2ef
Se han modificado 1 ficheros con 0 adiciones y 84 borrados
  1. +0
    -84
      btpd/udp_tr_if.c

+ 0
- 84
btpd/udp_tr_if.c Ver fichero

@@ -1,84 +0,0 @@
#include "btpd.h"

#include <evdns.h>

struct udp_tr_req {
enum { UDP_RESOLVE, UDP_CONN_SEND, UDP_CONN_RECV,
UDP_ANN_SEND, UDP_ANN_RECV } state;
int cancel;
char *host;
uint16_t port;
uint32_t ip;
struct event timer;
BTPDQ_ENTRY(udp_tr_req) entry;
};

BTPDQ_HEAD(udp_req_tq, udp_tr_req);

static int m_sd;
static struct event m_recv;
static struct event m_send;
static struct udp_req_tq m_reqq = BTPDQ_HEAD_INITIALIZER(m_reqq);

static void
req_kill(struct udp_tr_req *req)
{
free(req);
}

struct udp_tr_req *
udp_tr_req(struct torrent *tp, enum tr_event event, const char *aurl)
{
return NULL;
}

void
udp_tr_cancel(struct udp_tr_req *req)
{
}

void
udp_tr_init(void)
{
struct sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = INADDR_ANY;
addr.sin_port = 0;

if ((m_sd = socket(PF_INET, SOCK_DGRAM, 0)) < 0)
btpd_err("socket: %s\n", strerror(errno));

if (bind(m_sd, (struct sockaddr *)&addr, sizeof(addr)) < 0)
btpd_err("bind: %s\n", strerror(errno));

event_set(&m_recv, m_sd, EV_READ, sock_cb, NULL);
event_set(&m_send, m_sd, EV_WRITE, sock_cb, NULL);
}

static void
sock_cb(int sd, short type, void *arg)
{
}

static void
send_conn(struct udp_tr_req *req)
{
req->state = UDP_CONN_SEND;
}

static void
udp_dnscb(int result, char type, int count, int ttl, void *addrs, void *arg)
{
struct udp_tr_req *req = arg;
if (req->cancel)
req_kill(req);
else if (result == DNS_ERR_NONE && type == DNS_IPv4_A && count > 0) {
int addri = rand_between(0, count - 1);
bcopy(addrs + addri * 4, &req->ip, 4);
send_conn(req);
} else {
btpd_log(BTPD_L_ERROR, "failed to lookup '%s'.\n", req->host);
tr_result(req->tp, TR_RES_FAIL, -1);
req_kill(req);
}
}

Cargando…
Cancelar
Guardar