Start approaching something I can conceptually write working code around
This commit is contained in:
parent
5607dbede6
commit
116f4f9f6b
1 changed files with 21 additions and 26 deletions
47
src/server.c
47
src/server.c
|
@ -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:
|
||||
|
|
Loading…
Add table
Reference in a new issue