diff --git a/src/server.c b/src/server.c index 400ef02..5008fd4 100644 --- a/src/server.c +++ b/src/server.c @@ -117,6 +117,21 @@ static int destroy_if(patty_ax25_if *iface, void *ctx) { return 0; } +void patty_ax25_server_destroy(patty_ax25_server *server) { + patty_dict_destroy(server->clients_by_sock); + patty_dict_destroy(server->clients); + patty_dict_destroy(server->socks_established); + patty_dict_destroy(server->socks_pending_connect); + patty_dict_destroy(server->socks_pending_accept); + patty_dict_destroy(server->socks_by_fd); + + patty_ax25_server_each_if(server, destroy_if, NULL); + patty_ax25_route_table_destroy(server->routes); + patty_list_destroy(server->ifaces); + + free(server); +} + static inline void watch_fd(patty_ax25_server *server, int fd) { FD_SET(fd, &server->fds_watch); @@ -300,7 +315,6 @@ static int sock_close(patty_ax25_server *server, return 0; -error_dict_delete_by_fd_clients: error_dict_delete_by_fd_socks: error_sock_delete_by_addr_pending_accept: error_sock_delete_by_addrpair_pending_connect: @@ -749,9 +763,7 @@ static int server_close(patty_ax25_server *server, response.ret = 0; response.eno = 0; -error_close: error_sock_delete: -error_sock_send_disc: error_sock_by_fd: if (write(client, &response, sizeof(response)) < 0) { goto error_io; @@ -1403,18 +1415,3 @@ error_io: error_listen_unix: return -1; } - -void patty_ax25_server_destroy(patty_ax25_server *server) { - patty_dict_destroy(server->clients_by_sock); - patty_dict_destroy(server->clients); - patty_dict_destroy(server->socks_established); - patty_dict_destroy(server->socks_pending_connect); - patty_dict_destroy(server->socks_pending_accept); - patty_dict_destroy(server->socks_by_fd); - - patty_ax25_server_each_if(server, destroy_if, NULL); - patty_ax25_route_table_destroy(server->routes); - patty_list_destroy(server->ifaces); - - free(server); -}