Start approaching something I can conceptually write working code around

This commit is contained in:
XANTRONIX Development 2020-06-20 03:01:52 -04:00 committed by XANTRONIX Industrial
parent 5607dbede6
commit 116f4f9f6b

View file

@ -13,21 +13,18 @@
struct _patty_ax25_server {
patty_list *ifaces;
patty_dict *clients,
*client_requests;
patty_dict *socks_by_fd,
*socks_pending_accept,
*socks_pending_connect,
*socks_established;
patty_dict *clients_by_sock;
int fd_max;
fd_set fds_watch,
fds_r,
fds_w;
patty_list *responses_by_client;
fd_set fds_watch, /* fds to monitor with select() */
fds_socks, /* fds belonging to socks */
fds_clients; /* fds belonging to clients */
};
int patty_ax25_server_init(patty_ax25_server *server) {
@ -37,14 +34,6 @@ int patty_ax25_server_init(patty_ax25_server *server) {
goto error_list_new_ifaces;
}
if ((server->clients = patty_dict_new()) == NULL) {
goto error_dict_new_clients;
}
if ((server->client_requests = patty_dict_new()) == NULL) {
goto error_dict_new_client_requests;
}
if ((server->socks_by_fd = patty_dict_new()) == NULL) {
goto error_dict_new_socks_by_fd;
}
@ -61,8 +50,15 @@ int patty_ax25_server_init(patty_ax25_server *server) {
goto error_dict_new_socks_established;
}
if ((server->clients_by_sock = patty_dict_new()) == NULL) {
goto error_dict_new_clients_by_sock;
}
return 0;
error_dict_new_clients_by_sock:
patty_dict_destroy(server->socks_established);
error_dict_new_socks_established:
patty_dict_destroy(server->socks_pending_connect);
@ -73,12 +69,6 @@ error_dict_new_socks_pending_accept:
patty_dict_destroy(server->socks_by_fd);
error_dict_new_socks_by_fd:
patty_dict_destroy(server->client_requests);
error_dict_new_client_requests:
patty_dict_destroy(server->clients);
error_dict_new_clients:
patty_list_destroy(server->ifaces);
error_list_new_ifaces:
@ -92,12 +82,11 @@ static int destroy_if(patty_ax25_if *iface, void *ctx) {
}
void patty_ax25_server_stop(patty_ax25_server *server) {
patty_dict_destroy(server->clients_by_sock);
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_dict_destroy(server->client_requests);
patty_dict_destroy(server->clients);
patty_ax25_server_each_if(server, destroy_if, NULL);
patty_list_destroy(server->ifaces);
@ -729,8 +718,14 @@ static int server_connect(patty_ax25_server *server,
goto error_sock_save_by_addrpair;
}
response.ret = 0;
response.eno = 0;
/*
* TODO: Send SABM(E) frame; set timer, and await response from peer.
* We will need to know what client to send a response to when either the
* timeout has been exceeded or the peer has sent a UA frame to
* acknowledge and establish the connection.
*/
return 0;
error_invalid_status:
error_sock_by_fd: