diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2017-10-08 16:24:37 +0200 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2017-10-08 16:24:37 +0200 |
commit | 8774fccff32c8f5ed5527fa4e349ee534d34174c (patch) | |
tree | 44fa94e6e7f3260cb82443e2fdce996ca970908f | |
parent | Makefile: clang now builds the kernel, so use scan-build (diff) | |
download | wireguard-tools-8774fccff32c8f5ed5527fa4e349ee534d34174c.tar.xz wireguard-tools-8774fccff32c8f5ed5527fa4e349ee534d34174c.zip |
wg: try again if dump is interrupted
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
-rw-r--r-- | src/ipc.c | 5 |
1 files changed, 4 insertions, 1 deletions
@@ -855,11 +855,12 @@ static int kernel_get_device(struct wgdevice **dev, const char *interface) struct mnlg_socket *nlg; struct get_device_ctx ctx = { 0 }; +try_again: *dev = ctx.device = calloc(1, sizeof(struct wgdevice)); if (!*dev) return -errno; - nlg= mnlg_socket_open(WG_GENL_NAME, WG_GENL_VERSION); + nlg = mnlg_socket_open(WG_GENL_NAME, WG_GENL_VERSION); if (!nlg) { free_wgdevice(*dev); *dev = NULL; @@ -884,6 +885,8 @@ out: mnlg_socket_close(nlg); if (ret) { free_wgdevice(*dev); + if (ret == -EINTR) + goto try_again; *dev = NULL; } errno = -ret; |