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 | f230ebf822e877b1a61315548c10abb7929b3f20 (patch) | |
tree | efe299982d4e670eebbc94fa92e287f02e3749bd /src/tools/ipc.c | |
parent | socket: gcc inlining makes this faster (diff) | |
download | wireguard-monolithic-historical-f230ebf822e877b1a61315548c10abb7929b3f20.tar.xz wireguard-monolithic-historical-f230ebf822e877b1a61315548c10abb7929b3f20.zip |
tools: try again if dump is interrupted
Diffstat (limited to 'src/tools/ipc.c')
-rw-r--r-- | src/tools/ipc.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/tools/ipc.c b/src/tools/ipc.c index 5625526..a460d28 100644 --- a/src/tools/ipc.c +++ b/src/tools/ipc.c @@ -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; |