diff --git a/monitor.c b/monitor.c index 4f035ecd..65bd368c 100644 --- a/monitor.c +++ b/monitor.c @@ -109,6 +109,12 @@ monitor_setup_sockets(void) { return -1; } +void +monitor_cleanup_sockets(void) { + socket_done(confValueGet("monitor.socket", DEFAULT_MONITOR_SOCKET_NAME)); +} + + int monitor_get_fds(struct pollfd *fds,int *fdcount,int fdmax) { /* Make sure sockets are open */ diff --git a/overlay_mdp.c b/overlay_mdp.c index e0c7ea27..32a77a1e 100644 --- a/overlay_mdp.c +++ b/overlay_mdp.c @@ -1175,10 +1175,15 @@ int overlay_mdp_client_init() return -1; } +void +overlay_mdp_server_done(void) { + socket_done(confValueGet("mdp.socket", DEFAULT_MDP_SOCKET_NAME)); +} + int overlay_mdp_client_done(void) { overlay_mdp_frame mdp; - + if (mdp_client_socket != -1) { /* Tell MDP server to release all our bindings */ mdp.packetTypeAndFlags=MDP_GOODBYE; diff --git a/serval.h b/serval.h index ce930d6d..1c41c116 100755 --- a/serval.h +++ b/serval.h @@ -1317,6 +1317,7 @@ int keyring_mapping_request(keyring_file *k,overlay_mdp_frame *req); extern int mdp_client_socket; int overlay_mdp_client_init(); int overlay_mdp_client_done(); +void overlay_mdp_server_done(); int overlay_mdp_client_poll(long long timeout_ms); int overlay_mdp_recv(overlay_mdp_frame *mdp,int *ttl); int overlay_mdp_send(overlay_mdp_frame *mdp,int flags,int timeout_ms); @@ -1481,6 +1482,7 @@ int app_monitor_cli(int argc, const char *const *argv, struct command_line_optio int monitor_get_fds(struct pollfd *fds,int *fdcount,int fdmax); int monitor_setup_sockets(); +void monitor_cleanup_sockets(void); int monitor_poll(); int monitor_get_fds(struct pollfd *fds,int *fdcount,int fdmax); int monitor_call_status(vomp_call_state *call); diff --git a/server.c b/server.c index 17234599..49e3394e 100644 --- a/server.c +++ b/server.c @@ -289,13 +289,10 @@ void serverCleanUp() char filename[1024]; if (FORM_SERVAL_INSTANCE_PATH(filename, PIDFILE_NAME)) unlink(filename); - if (mdp_client_socket==-1) { - if (FORM_SERVAL_INSTANCE_PATH(filename, "mdp.socket")) { - unlink(filename); - } - } else { - overlay_mdp_client_done(); - } + + overlay_mdp_server_done(); + overlay_mdp_client_done(); + monitor_cleanup_sockets(); } static void signame(char *buf, size_t len, int signal)