ecore-ipc: don't return dead clients in ecore_ipc_server_clients_get

@fix

fix T5383
This commit is contained in:
Mike Blumenkrantz 2017-06-09 20:16:07 -04:00
parent a777fcb679
commit f2edb935a4
2 changed files with 7 additions and 1 deletions

View File

@ -809,6 +809,8 @@ ecore_ipc_server_del(Ecore_Ipc_Server *svr)
servers = eina_list_remove(servers, svr);
if (svr->buf) free(svr->buf);
eina_list_free(svr->dead_clients);
eina_list_free(svr->clients);
ECORE_MAGIC_SET(svr, ECORE_MAGIC_NONE);
DBG("server %p freed", svr);
free(svr);
@ -1233,6 +1235,9 @@ _ecore_ipc_client_socket_del(Ecore_Ipc_Client *cl)
efl_io_closer_close(cl->socket.socket);
efl_unref(cl->socket.socket);
cl->socket.socket = NULL;
if (!cl->svr) return;
cl->svr->clients = eina_list_remove(cl->svr->clients, cl);
cl->svr->dead_clients = eina_list_append(cl->svr->dead_clients, cl);
}
}
@ -1355,7 +1360,7 @@ ecore_ipc_client_del(Ecore_Ipc_Client *cl)
svr = cl->svr;
if (cl->socket.socket) _ecore_ipc_client_socket_del(cl);
if (ECORE_MAGIC_CHECK(svr, ECORE_MAGIC_IPC_SERVER))
svr->clients = eina_list_remove(svr->clients, cl);
svr->dead_clients = eina_list_remove(svr->dead_clients, cl);
if (cl->buf) free(cl->buf);
ECORE_MAGIC_SET(cl, ECORE_MAGIC_NONE);
free(cl);

View File

@ -103,6 +103,7 @@ struct _Ecore_Ipc_Server
Eo *server;
Eina_List *clients;
Eina_List *dead_clients;
void *data;
unsigned char *buf;
int buf_size;