Commit e239ff31 by Daniel Lezcano

Fix bad returned value

In case of error the message will be always truncated. We check the message was truncated with the total size received which means the kernel as more info to give. Signed-off-by: 's avatarDaniel Lezcano <dlezcano@fr.ibm.com>
parent 96bcd56a
......@@ -155,7 +155,8 @@ again:
if (!ret)
return 0;
if (msg.msg_flags & MSG_TRUNC)
if (msg.msg_flags & MSG_TRUNC &&
ret == answer->nlmsghdr.nlmsg_len)
return -EMSGSIZE;
return ret;
......@@ -182,9 +183,8 @@ extern int netlink_send(struct nl_handler *handler, struct nlmsg *nlmsg)
nladdr.nl_groups = 0;
ret = sendmsg(handler->fd, &msg, 0);
if (ret < 0) {
if (ret < 0)
return -errno;
}
return ret;
}
......@@ -209,7 +209,7 @@ extern int netlink_transaction(struct nl_handler *handler,
struct nlmsgerr *err = (struct nlmsgerr*)NLMSG_DATA(answer);
return err->error;
}
return 0;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment