diff --git a/legacy/ecore/src/lib/ecore_con/ecore_con.c b/legacy/ecore/src/lib/ecore_con/ecore_con.c index 92d4117fa6..7baadacdf4 100644 --- a/legacy/ecore/src/lib/ecore_con/ecore_con.c +++ b/legacy/ecore/src/lib/ecore_con/ecore_con.c @@ -434,6 +434,8 @@ ecore_con_server_connect(Ecore_Con_Type compl_type, _ecore_con_cl_handler, svr, NULL, NULL); if (!svr->fd_handler) goto error; + + if (!svr->delete_me) { /* we got our server! */ Ecore_Con_Event_Server_Add *e; @@ -974,6 +976,7 @@ _ecore_con_svr_handler(void *data, Ecore_Fd_Handler *fd_handler __UNUSED__) (ip >> 16) & 0xff, (ip >> 24) & 0xff); cl->ip = strdup(buf); + if (!cl->delete_me) { Ecore_Con_Event_Client_Add *e; @@ -1015,7 +1018,10 @@ svr_try_connect_ssl(Ecore_Con_Server *svr) if (ssl_err == SSL_ERROR_WANT_READ) flag = ECORE_FD_READ; else if (ssl_err == SSL_ERROR_WANT_WRITE) flag = ECORE_FD_WRITE; else return -1; - if (flag) ecore_main_fd_handler_active_set(svr->fd_handler, flag); + if (svr->fd_handler) + { + if (flag) ecore_main_fd_handler_active_set(svr->fd_handler, flag); + } return 0; } #endif @@ -1023,15 +1029,18 @@ svr_try_connect_ssl(Ecore_Con_Server *svr) static void kill_server(Ecore_Con_Server *svr) { - Ecore_Con_Event_Server_Del *e; - - e = calloc(1, sizeof(Ecore_Con_Event_Server_Del)); - if (e) + if (!svr->delete_me) { - svr->event_count++; - e->server = svr; - ecore_event_add(ECORE_CON_EVENT_SERVER_DEL, e, - _ecore_con_event_server_del_free, NULL); + Ecore_Con_Event_Server_Del *e; + + e = calloc(1, sizeof(Ecore_Con_Event_Server_Del)); + if (e) + { + svr->event_count++; + e->server = svr; + ecore_event_add(ECORE_CON_EVENT_SERVER_DEL, e, + _ecore_con_event_server_del_free, NULL); + } } svr->dead = 1; @@ -1129,20 +1138,26 @@ svr_try_connect_plain(Ecore_Con_Server *svr) } else { - /* we got our server! */ - Ecore_Con_Event_Server_Add *e; - - svr->connecting = 0; - e = calloc(1, sizeof(Ecore_Con_Event_Server_Add)); - if (e) + if (!svr->delete_me) { - svr->event_count++; - e->server = svr; - ecore_event_add(ECORE_CON_EVENT_SERVER_ADD, e, - _ecore_con_event_server_add_free, NULL); + /* we got our server! */ + Ecore_Con_Event_Server_Add *e; + + svr->connecting = 0; + e = calloc(1, sizeof(Ecore_Con_Event_Server_Add)); + if (e) + { + svr->event_count++; + e->server = svr; + ecore_event_add(ECORE_CON_EVENT_SERVER_ADD, e, + _ecore_con_event_server_add_free, NULL); + } + } + if (svr->fd_handler) + { + if (!svr->write_buf) + ecore_main_fd_handler_active_set(svr->fd_handler, ECORE_FD_READ); } - if (!svr->write_buf) - ecore_main_fd_handler_active_set(svr->fd_handler, ECORE_FD_READ); } return (!svr->dead); } @@ -1231,18 +1246,21 @@ _ecore_con_cl_handler(void *data, Ecore_Fd_Handler *fd_handler) { if (inbuf) { - Ecore_Con_Event_Server_Data *e; - - e = calloc(1, sizeof(Ecore_Con_Event_Server_Data)); - if (e) + if (!svr->delete_me) { - svr->event_count++; - e->server = svr; - e->data = inbuf; - e->size = inbuf_num; - ecore_event_add(ECORE_CON_EVENT_SERVER_DATA, e, - _ecore_con_event_server_data_free, - NULL); + Ecore_Con_Event_Server_Data *e; + + e = calloc(1, sizeof(Ecore_Con_Event_Server_Data)); + if (e) + { + svr->event_count++; + e->server = svr; + e->data = inbuf; + e->size = inbuf_num; + ecore_event_add(ECORE_CON_EVENT_SERVER_DATA, e, + _ecore_con_event_server_data_free, + NULL); + } } } if (lost_server) @@ -1262,10 +1280,13 @@ _ecore_con_cl_handler(void *data, Ecore_Fd_Handler *fd_handler) } #if USE_OPENSSL - if (svr->ssl && ssl_err == SSL_ERROR_WANT_READ) - ecore_main_fd_handler_active_set(svr->fd_handler, ECORE_FD_READ); - else if (svr->ssl && ssl_err == SSL_ERROR_WANT_WRITE) - ecore_main_fd_handler_active_set(svr->fd_handler, ECORE_FD_WRITE); + if (svr->fd_handler) + { + if (svr->ssl && ssl_err == SSL_ERROR_WANT_READ) + ecore_main_fd_handler_active_set(svr->fd_handler, ECORE_FD_READ); + else if (svr->ssl && ssl_err == SSL_ERROR_WANT_WRITE) + ecore_main_fd_handler_active_set(svr->fd_handler, ECORE_FD_WRITE); + } #endif } else if (ecore_main_fd_handler_active_get(fd_handler, ECORE_FD_WRITE)) @@ -1303,38 +1324,45 @@ _ecore_con_svr_cl_handler(void *data, Ecore_Fd_Handler *fd_handler) { if (inbuf) { - Ecore_Con_Event_Client_Data *e; - - e = calloc(1, sizeof(Ecore_Con_Event_Client_Data)); - if (e) + if (!cl->delete_me) { - cl->event_count++; - e->client = cl; - e->data = inbuf; - e->size = inbuf_num; - ecore_event_add(ECORE_CON_EVENT_CLIENT_DATA, e, - _ecore_con_event_client_data_free, - NULL); + Ecore_Con_Event_Client_Data *e; + + e = calloc(1, sizeof(Ecore_Con_Event_Client_Data)); + if (e) + { + cl->event_count++; + e->client = cl; + e->data = inbuf; + e->size = inbuf_num; + ecore_event_add(ECORE_CON_EVENT_CLIENT_DATA, e, + _ecore_con_event_client_data_free, + NULL); + } } } if ((errno == EIO) || (errno == EBADF) || (errno == EPIPE) || (errno == EINVAL) || (errno == ENOSPC) || (num == 0)/* is num == 0 right? */) { - /* we lost our client! */ - Ecore_Con_Event_Client_Del *e; - - e = calloc(1, sizeof(Ecore_Con_Event_Client_Del)); - if (e) + if (!cl->delete_me) { - cl->event_count++; - e->client = cl; - ecore_event_add(ECORE_CON_EVENT_CLIENT_DEL, e, - _ecore_con_event_client_del_free, - NULL); + /* we lost our client! */ + Ecore_Con_Event_Client_Del *e; + + e = calloc(1, sizeof(Ecore_Con_Event_Client_Del)); + if (e) + { + cl->event_count++; + e->client = cl; + ecore_event_add(ECORE_CON_EVENT_CLIENT_DEL, e, + _ecore_con_event_client_del_free, + NULL); + } } cl->dead = 1; - ecore_main_fd_handler_del(cl->fd_handler); + if (cl->fd_handler) + ecore_main_fd_handler_del(cl->fd_handler); cl->fd_handler = NULL; } break; @@ -1403,12 +1431,15 @@ _ecore_con_server_flush(Ecore_Con_Server *svr) if (count < 1) { #if USE_OPENSSL - if (svr->ssl && ssl_err == SSL_ERROR_WANT_READ) - ecore_main_fd_handler_active_set(svr->fd_handler, - ECORE_FD_READ); - else if (svr->ssl && ssl_err == SSL_ERROR_WANT_WRITE) - ecore_main_fd_handler_active_set(svr->fd_handler, - ECORE_FD_WRITE); + if (svr->fd_handler) + { + if (svr->ssl && ssl_err == SSL_ERROR_WANT_READ) + ecore_main_fd_handler_active_set(svr->fd_handler, + ECORE_FD_READ); + else if (svr->ssl && ssl_err == SSL_ERROR_WANT_WRITE) + ecore_main_fd_handler_active_set(svr->fd_handler, + ECORE_FD_WRITE); + } #endif return; } @@ -1420,7 +1451,8 @@ _ecore_con_server_flush(Ecore_Con_Server *svr) svr->write_buf_offset = 0; free(svr->write_buf); svr->write_buf = NULL; - ecore_main_fd_handler_active_set(svr->fd_handler, ECORE_FD_READ); + if (svr->fd_handler) + ecore_main_fd_handler_active_set(svr->fd_handler, ECORE_FD_READ); } } @@ -1437,20 +1469,24 @@ _ecore_con_client_flush(Ecore_Con_Client *cl) if ((errno == EIO) || (errno == EBADF) || (errno == EPIPE) || (errno == EINVAL) || (errno == ENOSPC)) { - /* we lost our client! */ - Ecore_Con_Event_Client_Del *e; - - e = calloc(1, sizeof(Ecore_Con_Event_Client_Del)); - if (e) + if (!cl->delete_me) { - cl->event_count++; - e->client = cl; - ecore_event_add(ECORE_CON_EVENT_CLIENT_DEL, e, - _ecore_con_event_client_del_free, NULL); + /* we lost our client! */ + Ecore_Con_Event_Client_Del *e; + + e = calloc(1, sizeof(Ecore_Con_Event_Client_Del)); + if (e) + { + cl->event_count++; + e->client = cl; + ecore_event_add(ECORE_CON_EVENT_CLIENT_DEL, e, + _ecore_con_event_client_del_free, NULL); + } + cl->dead = 1; + if (cl->fd_handler) + ecore_main_fd_handler_del(cl->fd_handler); + cl->fd_handler = NULL; } - cl->dead = 1; - ecore_main_fd_handler_del(cl->fd_handler); - cl->fd_handler = NULL; } return; } @@ -1461,7 +1497,8 @@ _ecore_con_client_flush(Ecore_Con_Client *cl) cl->buf_offset = 0; free(cl->buf); cl->buf = NULL; - ecore_main_fd_handler_active_set(cl->fd_handler, ECORE_FD_READ); + if (cl->fd_handler) + ecore_main_fd_handler_active_set(cl->fd_handler, ECORE_FD_READ); } } diff --git a/legacy/ecore/src/lib/ecore_ipc/ecore_ipc.c b/legacy/ecore/src/lib/ecore_ipc/ecore_ipc.c index 1ed9653d5c..ec28735a3d 100644 --- a/legacy/ecore/src/lib/ecore_ipc/ecore_ipc.c +++ b/legacy/ecore/src/lib/ecore_ipc/ecore_ipc.c @@ -973,6 +973,7 @@ _ecore_ipc_event_client_add(void *data __UNUSED__, int ev_type __UNUSED__, void ecore_con_client_data_set(cl->client, (void *)cl); svr->clients = _ecore_list2_append(svr->clients, cl); ecore_list_append(svr->client_list, cl); + if (!cl->delete_me) { Ecore_Ipc_Event_Client_Add *e2; @@ -1009,13 +1010,16 @@ _ecore_ipc_event_client_del(void *data __UNUSED__, int ev_type __UNUSED__, void ecore_list_goto(svr->client_list, cl); ecore_list_remove(svr->client_list); ecore_list_goto_first(svr->client_list); - e2 = calloc(1, sizeof(Ecore_Ipc_Event_Client_Del)); - if (e2) + if (!cl->delete_me) { - cl->event_count++; - e2->client = cl; - ecore_event_add(ECORE_IPC_EVENT_CLIENT_DEL, e2, - _ecore_ipc_event_client_del_free, NULL); + e2 = calloc(1, sizeof(Ecore_Ipc_Event_Client_Del)); + if (e2) + { + cl->event_count++; + e2->client = cl; + ecore_event_add(ECORE_IPC_EVENT_CLIENT_DEL, e2, + _ecore_ipc_event_client_del_free, NULL); + } } } } @@ -1034,6 +1038,7 @@ _ecore_ipc_event_server_add(void *data __UNUSED__, int ev_type __UNUSED__, void Ecore_Ipc_Server *svr; svr = ecore_con_server_data_get(e->server); + if (!svr->delete_me) { Ecore_Ipc_Event_Server_Add *e2; @@ -1062,6 +1067,7 @@ _ecore_ipc_event_server_del(void *data __UNUSED__, int ev_type __UNUSED__, void Ecore_Ipc_Server *svr; svr = ecore_con_server_data_get(e->server); + if (!svr->delete_me) { Ecore_Ipc_Event_Server_Del *e2; @@ -1219,21 +1225,24 @@ _ecore_ipc_event_client_data(void *data __UNUSED__, int ev_type __UNUSED__, void if (!buf) return 0; memcpy(buf, cl->buf + offset + s, msg.size); } - e2 = calloc(1, sizeof(Ecore_Ipc_Event_Client_Data)); - if (e2) + if (!cl->delete_me) { - cl->event_count++; - e2->client = cl; - e2->major = msg.major; - e2->minor = msg.minor; - e2->ref = msg.ref; - e2->ref_to = msg.ref_to; - e2->response = msg.response; - e2->size = msg.size; - e2->data = buf; - ecore_event_add(ECORE_IPC_EVENT_CLIENT_DATA, e2, - _ecore_ipc_event_client_data_free, - NULL); + e2 = calloc(1, sizeof(Ecore_Ipc_Event_Client_Data)); + if (e2) + { + cl->event_count++; + e2->client = cl; + e2->major = msg.major; + e2->minor = msg.minor; + e2->ref = msg.ref; + e2->ref_to = msg.ref_to; + e2->response = msg.response; + e2->size = msg.size; + e2->data = buf; + ecore_event_add(ECORE_IPC_EVENT_CLIENT_DATA, e2, + _ecore_ipc_event_client_data_free, + NULL); + } } } cl->prev.i = msg; @@ -1399,21 +1408,24 @@ _ecore_ipc_event_server_data(void *data __UNUSED__, int ev_type __UNUSED__, void if (!buf) return 0; memcpy(buf, svr->buf + offset + s, msg.size); } - e2 = calloc(1, sizeof(Ecore_Ipc_Event_Server_Data)); - if (e2) + if (!svr->delete_me) { - svr->event_count++; - e2->server = svr; - e2->major = msg.major; - e2->minor = msg.minor; - e2->ref = msg.ref; - e2->ref_to = msg.ref_to; - e2->response = msg.response; - e2->size = msg.size; - e2->data = buf; - ecore_event_add(ECORE_IPC_EVENT_SERVER_DATA, e2, - _ecore_ipc_event_server_data_free, - NULL); + e2 = calloc(1, sizeof(Ecore_Ipc_Event_Server_Data)); + if (e2) + { + svr->event_count++; + e2->server = svr; + e2->major = msg.major; + e2->minor = msg.minor; + e2->ref = msg.ref; + e2->ref_to = msg.ref_to; + e2->response = msg.response; + e2->size = msg.size; + e2->data = buf; + ecore_event_add(ECORE_IPC_EVENT_SERVER_DATA, e2, + _ecore_ipc_event_server_data_free, + NULL); + } } } svr->prev.i = msg;