We were performing one extra skb_recv_datagram in mptp_recvmsg.
[swifty.git] / src / kernel / mptp.c
index a979736..83f7b1e 100644 (file)
@@ -388,18 +388,23 @@ static int mptp_recvmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *
                        log_error("skb_copy_datagram_iovec\n");
                        goto out_free;
                }
-               msg->msg_iov[i].iov_len = copied;
+               log_debug("Received %d bytes\n", copied);
 
                sock_recv_ts_and_drops(msg, sk, skb);
 
-               if (ret_addr)
+               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");