summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Graf <tgraf@redhat.com>2012-06-13 13:04:03 +0200
committerThomas Graf <tgraf@redhat.com>2012-06-13 13:19:06 +0200
commit69da6af3e4c423a4bdf26854a58188fc47126b13 (patch)
tree3f57c94b6dcfa6d2e5d9d6f8dc05411ae16b0bb6
parent84037becfd0d50419a03c9a4816375e049b9336b (diff)
downloadlibnl-69da6af3e4c423a4bdf26854a58188fc47126b13.tar.gz
genl: Wait for ACK after successful ctrl reply
Signed-off-by: Thomas Graf <tgraf@suug.ch>
-rw-r--r--lib/genl/ctrl.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/lib/genl/ctrl.c b/lib/genl/ctrl.c
index 3902f09..e11c5c6 100644
--- a/lib/genl/ctrl.c
+++ b/lib/genl/ctrl.c
@@ -267,7 +267,14 @@ static struct genl_family *genl_ctrl_probe_by_name(struct nl_sock *sk, const cha
nl_cb_set(cb, NL_CB_VALID, NL_CB_CUSTOM, probe_response, (void *)ret);
- nl_recvmsgs(sk, cb);
+ rc = nl_recvmsgs(sk, cb);
+ if (rc < 0)
+ goto out_cb_free;
+
+ /* If search was successful, request may be ACKed after data */
+ rc = wait_for_ack(sk);
+ if (rc < 0)
+ goto out_cb_free;
if (genl_family_get_id(ret) != 0) {
nlmsg_free(msg);