diff options
Diffstat (limited to 'src/espik_net.c')
-rw-r--r-- | src/espik_net.c | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/src/espik_net.c b/src/espik_net.c index 5fe8944..679ee04 100644 --- a/src/espik_net.c +++ b/src/espik_net.c @@ -21,6 +21,17 @@ char connected = 0; Ecore_Con_Server* con_sock; +typedef struct +{ + Ecore_Event_Handler* data; + Ecore_Event_Handler* up; + Ecore_Event_Handler* down; + +} espik_con_handler_list; + + +espik_con_handler_list handler_list; + void espik_con_init (t_info serv_info) { int nb_launch; @@ -44,7 +55,7 @@ void espik_con_init (t_info serv_info) exit (-1); } - if (! (ecore_event_handler_add (ECORE_CON_EVENT_SERVER_DATA, + if (! (handler_list.data = ecore_event_handler_add (ECORE_CON_EVENT_SERVER_DATA, (Handler_Func) server_data, NULL))) { espik_debug_print ("ecore_event_handler_add " @@ -52,7 +63,7 @@ void espik_con_init (t_info serv_info) exit (-1); } - if (! (ecore_event_handler_add (ECORE_CON_EVENT_SERVER_ADD, + if (! (handler_list.up = ecore_event_handler_add (ECORE_CON_EVENT_SERVER_ADD, (Handler_Func) espik_con_up, NULL))) { espik_debug_print ("ecore_event_handler_add " @@ -60,7 +71,7 @@ void espik_con_init (t_info serv_info) exit (-1); } - if (! (ecore_event_handler_add (ECORE_CON_EVENT_SERVER_DEL, + if (! (handler_list.down = ecore_event_handler_add (ECORE_CON_EVENT_SERVER_DEL, (Handler_Func) espik_con_shutdown, NULL))) { espik_debug_print ("ecore_event_handler_add " @@ -122,10 +133,16 @@ void espik_con_shutdown () espik_debug_print ("ecore_con_server_del: %p", ecore_con_server_del (con_sock)); + ecore_con_shutdown (); + ecore_event_handler_del (handler_list.data); + ecore_event_handler_del (handler_list.up); + ecore_event_handler_del (handler_list.down); + ecore_main_loop_quit (); free (server_dns); + espik_leave(); } @@ -150,7 +167,6 @@ void espik_raw_send (const char *msg) printf ("out[len-1]: 0x%X\n", out[len - 1]); */ - int i; for (i = 0 ; buf.buf[i] != 0 ; i++) { |