Bring interfaces down when an error is encountered

Modify src/server.c to bring interfaces down when an I/O error is
encountered
This commit is contained in:
XANTRONIX Development 2020-10-05 01:01:17 -04:00 committed by XANTRONIX Industrial
parent 8e118a3b56
commit 5b59b163d2
4 changed files with 15 additions and 2 deletions

View file

@ -125,6 +125,8 @@ static patty_ax25_if *create_kiss(struct context *ctx, int argc, char **argv) {
goto error_if_addr_set;
}
patty_ax25_if_up(iface);
return iface;
error_if_addr_set:

View file

@ -127,6 +127,8 @@ static int handle_if(struct context *ctx,
fflush(stdout);
}
patty_ax25_if_up(iface);
}
if (patty_daemon_if_add(ctx->daemon, iface, ifname) < 0) {
@ -323,6 +325,8 @@ static int handle_standalone(patty_daemon *daemon,
if (isatty(fd) && (pty = ptsname(fd)) != NULL) {
printf("if %s pty %s\n", DEFAULT_IFNAME, pty);
}
patty_ax25_if_up(iface);
}
if (patty_daemon_if_add(daemon, iface, DEFAULT_IFNAME) < 0) {

View file

@ -282,7 +282,8 @@ int patty_ax25_if_fd(patty_ax25_if *iface) {
}
int patty_ax25_if_ready(patty_ax25_if *iface, fd_set *fds) {
return iface->driver->ready(iface->phy, fds);
return iface->status == PATTY_AX25_IF_UP?
iface->driver->ready(iface->phy, fds): 0;
}
ssize_t patty_ax25_if_fill(patty_ax25_if *iface) {

View file

@ -2087,8 +2087,14 @@ static int handle_ifaces(patty_ax25_server *server) {
struct if_entry *entry = item->value;
if (handle_iface(server, entry) < 0) {
if (errno == EIO) {
patty_ax25_if_down(entry->iface);
fd_clear(server, entry->fd);
} else {
goto error_io;
}
}
item = item->next;
}