summaryrefslogtreecommitdiff
path: root/iwinfo_nl80211.c
diff options
context:
space:
mode:
authorJo-Philipp Wich <jo@mein.io>2017-06-26 07:06:40 +0200
committerJo-Philipp Wich <jo@mein.io>2017-06-26 07:06:40 +0200
commit7bba117a3a80e29d73b03b8a43a183ceca1f80c1 (patch)
tree9a3b5a31c0d8b7dd8319a189ade6c1a6fd2756ab /iwinfo_nl80211.c
parentd22c64c2eb6db3db6aaac5ae270acd63ed088a20 (diff)
downloadiwinfo-7bba117a3a80e29d73b03b8a43a183ceca1f80c1.tar.gz
nl80211: handle netlink errors in nl80211_wait()
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Diffstat (limited to 'iwinfo_nl80211.c')
-rw-r--r--iwinfo_nl80211.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/iwinfo_nl80211.c b/iwinfo_nl80211.c
index 63b70d5..e3a7e4d 100644
--- a/iwinfo_nl80211.c
+++ b/iwinfo_nl80211.c
@@ -481,6 +481,7 @@ static int nl80211_wait(const char *family, const char *group, int cmd)
{
struct nl80211_event_conveyor cv = { .wait = cmd };
struct nl_cb *cb;
+ int err = 0;
if (nl80211_subscribe(family, group))
return -ENOENT;
@@ -490,15 +491,16 @@ static int nl80211_wait(const char *family, const char *group, int cmd)
if (!cb)
return -ENOMEM;
+ nl_cb_err(cb, NL_CB_CUSTOM, nl80211_msg_error, &err);
nl_cb_set(cb, NL_CB_SEQ_CHECK, NL_CB_CUSTOM, nl80211_wait_seq_check, NULL);
nl_cb_set(cb, NL_CB_VALID, NL_CB_CUSTOM, nl80211_wait_cb, &cv );
- while (!cv.recv)
+ while (!cv.recv && !err)
nl_recvmsgs(nls->nl_sock, cb);
nl_cb_put(cb);
- return 0;
+ return err;
}