[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [E-devel] E ipc server



Carsten Haitzler (The Rasterman) wrote:
> On Wed, 15 Feb 2006 16:52:15 +0100 Arnaud Vrac <rawoul@zogzog.org> babbled:
> 
>> Hi,
>>
>> I think there is a little problem in the IPC server of enlightenment: 
>> the client is deleted in the disconnection handler. This means that 
>> pending callbacks for this event on other servers will cause an ecore 
>> spank error when trying to read the client data (this problem occurs for 
>> me as i'm creating an ipc server in a module).
>>
>> I think the call to ecore_ipc_client_del in _e_ipc_cb_client_del should 
>> be removed, but then i'm not sure the client will ever be deleted at all.
> 
> it needs to be deleted otherwise the client object will hang around forever
> until it is deleted. note that the code CHECKS to see the ipc server object is
> e's own ipc server instance - if its some other ipc server it just returns 1
> and passes the event on without doing anything. ie:
> 
>    if (ecore_ipc_client_server_get(e->client) != _e_ipc_server) return 1;
>    /* delete client sruct */
>    ecore_ipc_client_del(e->client);

Yes i do the same check in my code, but Ecore fails the magic check
because e->client has already been deleted.