First step for using multiple recvs from mptp.
[swifty.git] / src / libswift / sendrecv.cpp
index 6676913..710e327 100644 (file)
@@ -200,7 +200,7 @@ void    Channel::Send () {
     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
@@ -338,7 +338,7 @@ bin_t        Channel::AddData (struct evbuffer *evb) {
         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_);
@@ -914,7 +914,7 @@ void Channel::LibeventReceiveCallback(evutil_socket_t fd, short event, void *arg
     event_add(&evrecv, NULL);
 }
 
-#define NUM_DATAGRAMS 1
+#define NUM_DATAGRAMS 10
 
 void    Channel::RecvDatagram (evutil_socket_t socket) {
     struct evbuffer *pevb[NUM_DATAGRAMS];
@@ -927,12 +927,11 @@ void    Channel::RecvDatagram (evutil_socket_t socket) {
        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)