projects
/
apps
/
pfixtools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Close the listeners on exit.
[apps/pfixtools.git]
/
server.c
diff --git
a/server.c
b/server.c
index
0d6443c
..
73c2888
100644
(file)
--- a/
server.c
+++ b/
server.c
@@
-36,6
+36,10
@@
#include "server.h"
#include "epoll.h"
#include "server.h"
#include "epoll.h"
+static server_t *listeners[1024];
+static int listener_count = 0;
+
+
static server_t* server_new(void)
{
server_t* server = p_new(server_t, 1);
static server_t* server_new(void)
{
server_t* server = p_new(server_t, 1);
@@
-58,6
+62,15
@@
static void server_delete(server_t **server)
}
}
}
}
+static void server_shutdown(void)
+{
+ for (int i = 0 ; i < listener_count ; ++i) {
+ server_delete(&listeners[i]);
+ }
+}
+
+module_exit(server_shutdown);
+
int start_server(int port, start_listener_t starter, delete_client_t deleter)
{
struct sockaddr_in addr = {
int start_server(int port, start_listener_t starter, delete_client_t deleter)
{
struct sockaddr_in addr = {
@@
-88,6
+101,7
@@
int start_server(int port, start_listener_t starter, delete_client_t deleter)
tmp->data = data;
tmp->clear_data = deleter;
epoll_register(sock, EPOLLIN, tmp);
tmp->data = data;
tmp->clear_data = deleter;
epoll_register(sock, EPOLLIN, tmp);
+ listeners[listener_count++] = tmp;
return 0;
}
return 0;
}