diff --git a/src/if.c b/src/if.c index 486da4d..1534e79 100644 --- a/src/if.c +++ b/src/if.c @@ -238,26 +238,24 @@ error_list_start: int patty_ax25_add_if(patty_ax25 *ax25, patty_ax25_if *iface) { int fd; - if ((fd = patty_kiss_tnc_fd_unix(iface->tnc)) < 0) { - goto error_kiss_tnc_fd_unix; + if ((fd = patty_kiss_tnc_fd_unix(iface->tnc)) >= 0) { + FD_SET(fd, &ax25->unix_fds); } if (patty_list_append(ax25->ifaces, iface) == NULL) { goto error_list_append; } - FD_SET(fd, &ax25->unix_fds); - return 0; error_list_append: -error_kiss_tnc_fd_unix: return -1; } int patty_ax25_delete_if(patty_ax25 *ax25, patty_ax25_if *iface) { patty_list_item *item = ax25->ifaces->first; - int i = 0; + + int fd, i = 0; while (item) { if (item->value == iface) { @@ -272,6 +270,12 @@ int patty_ax25_delete_if(patty_ax25 *ax25, patty_ax25_if *iface) { i++; } + if ((fd = patty_kiss_tnc_fd_unix(iface->tnc)) >= 0) { + FD_CLR(fd, &ax25->unix_fds); + } + + return 0; + error_list_splice: return -1; }