X-Git-Url: http://p2p-next.cs.pub.ro/gitweb/?a=blobdiff_plain;f=src%2Fkernel%2Fswift.c;h=270b43b78a44ccb357040ec477f2af8083db9299;hb=ade3730ffddebf5ecb6505a718d36d7d6f543db3;hp=63004b195483bebd7d66cfa869e371eee2e3f98d;hpb=5ddb1215a7b43bad32876d89e57108584f3b462b;p=swifty.git diff --git a/src/kernel/swift.c b/src/kernel/swift.c index 63004b1..270b43b 100644 --- a/src/kernel/swift.c +++ b/src/kernel/swift.c @@ -363,7 +363,7 @@ static int swift_recvmsg(struct kiocb *iocb, struct socket *sock, struct msghdr skb = skb_recv_datagram(sk, flags, flags & MSG_DONTWAIT, &err); if (unlikely(!skb)) { - log_error("skb_recv_datagram\n"); + log_error("skb_recv_datagram failed with %d\n", err); goto out; } @@ -383,17 +383,23 @@ static int swift_recvmsg(struct kiocb *iocb, struct socket *sock, struct msghdr log_error("skb_copy_datagram_iovec\n"); goto out_free; } + log_debug("Received %d bytes\n", copied); sock_recv_ts_and_drops(msg, sk, skb); - if (ret_addr) - memcpy(&ret_addr->dests[i], &swift_addr->dests[0], sizeof(ret_addr->dests[i])); + if (ret_addr) { + memcpy(&ret_addr->dests[i], &mptp_addr->dests[0], sizeof(ret_addr->dests[i])); + ret_addr->dests[i].bytes = copied; + } err = copied; out_free: skb_free_datagram(sk, skb); + if (i == msg->msg_iovlen - 1) + break; + skb = skb_recv_datagram(sk, flags, 1, &err); if (likely(err == -EAGAIN)) { log_debug("No more skbs in the queue, returning...\n");