if (likely(!err)) {
log_debug("Sent %u bytes on wire\n", len);
ret += len;
- } else
+ dest->bytes = len;
+ } else {
log_error("ip_queue_xmit failed\n");
+ dest->bytes = -1;
+ }
}
return ret;
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");