dprintf("%s #%u sent %ib %s:%x\n",
tintstr(),id_,(int)evbuffer_get_length(evb),peer().str(),
peer_channel_id_);
- int r = SendTo(socket_,peer(),evb);
+ int r = SendTo(socket_,peer(),&evb);
if (r==-1)
print_error("can't send datagram");
else
dprintf("%s #%u fsent %ib %s:%x\n",
tintstr(),id_,(int)evbuffer_get_length(evb),peer().str(),
peer_channel_id_);
- int ret = Channel::SendTo(socket_,peer(),evb); // kind of fragmentation
+ int ret = Channel::SendTo(socket_,peer(),&evb); // kind of fragmentation
if (ret > 0)
raw_bytes_up_ += ret;
evbuffer_add_32be(evb, peer_channel_id_);
event_add(&evrecv, NULL);
}
-#define NUM_DATAGRAMS 1
+#define NUM_DATAGRAMS 10
void Channel::RecvDatagram (evutil_socket_t socket) {
struct evbuffer *pevb[NUM_DATAGRAMS];
addr.addr->count = NUM_DATAGRAMS;
RecvFrom(socket, addr, pevb);
int i = 0;
- printf("Got %d addresses\n", addr.addr->count);
for (; i<addr.addr->count; ++i) {
struct evbuffer *evb = pevb[i];
Address fromi;
- fromi.set_ipv4(addr.addr->dests[i].addr);
- fromi.set_port(addr.addr->dests[i].port);
+ fromi.addr->dests[0].addr = addr.addr->dests[i].addr;
+ fromi.addr->dests[0].port = addr.addr->dests[i].port;
size_t evboriglen = evbuffer_get_length(evb);
#define return_log(...) { fprintf(stderr,__VA_ARGS__); evbuffer_free(evb); return; }
if (evbuffer_get_length(evb)<4)