forked from enlightenment/efl
ecore-ipc: don't return dead clients in ecore_ipc_server_clients_get
@fix fix T5383
This commit is contained in:
parent
a777fcb679
commit
f2edb935a4
|
@ -809,6 +809,8 @@ ecore_ipc_server_del(Ecore_Ipc_Server *svr)
|
||||||
servers = eina_list_remove(servers, svr);
|
servers = eina_list_remove(servers, svr);
|
||||||
|
|
||||||
if (svr->buf) free(svr->buf);
|
if (svr->buf) free(svr->buf);
|
||||||
|
eina_list_free(svr->dead_clients);
|
||||||
|
eina_list_free(svr->clients);
|
||||||
ECORE_MAGIC_SET(svr, ECORE_MAGIC_NONE);
|
ECORE_MAGIC_SET(svr, ECORE_MAGIC_NONE);
|
||||||
DBG("server %p freed", svr);
|
DBG("server %p freed", svr);
|
||||||
free(svr);
|
free(svr);
|
||||||
|
@ -1233,6 +1235,9 @@ _ecore_ipc_client_socket_del(Ecore_Ipc_Client *cl)
|
||||||
efl_io_closer_close(cl->socket.socket);
|
efl_io_closer_close(cl->socket.socket);
|
||||||
efl_unref(cl->socket.socket);
|
efl_unref(cl->socket.socket);
|
||||||
cl->socket.socket = NULL;
|
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;
|
svr = cl->svr;
|
||||||
if (cl->socket.socket) _ecore_ipc_client_socket_del(cl);
|
if (cl->socket.socket) _ecore_ipc_client_socket_del(cl);
|
||||||
if (ECORE_MAGIC_CHECK(svr, ECORE_MAGIC_IPC_SERVER))
|
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);
|
if (cl->buf) free(cl->buf);
|
||||||
ECORE_MAGIC_SET(cl, ECORE_MAGIC_NONE);
|
ECORE_MAGIC_SET(cl, ECORE_MAGIC_NONE);
|
||||||
free(cl);
|
free(cl);
|
||||||
|
|
|
@ -103,6 +103,7 @@ struct _Ecore_Ipc_Server
|
||||||
Eo *server;
|
Eo *server;
|
||||||
|
|
||||||
Eina_List *clients;
|
Eina_List *clients;
|
||||||
|
Eina_List *dead_clients;
|
||||||
void *data;
|
void *data;
|
||||||
unsigned char *buf;
|
unsigned char *buf;
|
||||||
int buf_size;
|
int buf_size;
|
||||||
|
|
Loading…
Reference in New Issue