X-Git-Url: https://www.tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fuml_device.c;h=f35ae0d2a561320796c3094e5d668ce04e2a30b9;hb=28b7a53b693f6b4e70218a926e68a36ece54cda1;hp=970e462a8b34fcf60248aa3751fa63a48e084d5a;hpb=0912276c6467aa3ee6f570b31245367319da572a;p=tinc diff --git a/src/uml_device.c b/src/uml_device.c index 970e462a..f35ae0d2 100644 --- a/src/uml_device.c +++ b/src/uml_device.c @@ -1,7 +1,7 @@ /* device.c -- UML network socket Copyright (C) 2002-2005 Ivo Timmermans, - 2002-2017 Guus Sliepen + 2002-2022 Guus Sliepen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -163,7 +163,7 @@ static bool setup_device(void) { return true; } -void close_device(void) { +static void close_device(void) { if(listen_fd >= 0) { close(listen_fd); listen_fd = -1; @@ -249,7 +249,12 @@ static bool read_packet(vpn_packet_t *packet) { return false; } - write(request_fd, &data_sun, sizeof(data_sun)); + if(write(request_fd, &data_sun, sizeof(data_sun)) != sizeof(data_sun)) { + logger(DEBUG_ALWAYS, LOG_ERR, "Error while responding to request from %s %s: %s", device_info, device, strerror(errno)); + event_exit(); + return false; + } + device_fd = data_fd; logger(DEBUG_ALWAYS, LOG_INFO, "Connection with UML established");