return r;
if (nlmsg_type == RTM_NEWROUTE)
- (*ret)->hdr->nlmsg_flags |= NLM_F_CREATE | NLM_F_EXCL;
+ (*ret)->hdr->nlmsg_flags |= NLM_F_CREATE | NLM_F_APPEND;
rtm = NLMSG_DATA((*ret)->hdr);
struct nlmsghdr *new_msg;
size_t len;
int r;
- unsigned i;
+ unsigned i = 0;
assert(rtnl);
assert(rtnl->rbuffer);
if (r < 0)
return r;
- if (i < rtnl->rqueue_partial_size) {
+ rtnl->rqueue[rtnl->rqueue_size ++] = first;
+ first = NULL;
+
+ if (multi_part && (i < rtnl->rqueue_partial_size)) {
/* remove the message form the partial read queue */
memmove(rtnl->rqueue_partial + i,rtnl->rqueue_partial + i + 1,
sizeof(sd_rtnl_message*) * (rtnl->rqueue_partial_size - i - 1));
rtnl->rqueue_partial_size --;
}
- rtnl->rqueue[rtnl->rqueue_size ++] = first;
- first = NULL;
-
return 1;
} else {
/* we only got a partial multi-part message, push it on the