handler = server->newclient(server->data, addr);

newclient is a caller provided callback function to return any instance of
fluid_cmd_handler_t. This instance is only *assigned* to any created
fluid_client, it's not *owned* by it. Thus the caller would be responsible
for delete_fluid_cmd_handler().

However I refactored that part on master:
https://github.com/FluidSynth/fluidsynth/commit/cb036d20233982567c3c6100999c3150f501b8f1

The fluid_cmd_handler_t is now uniquely created for every fluid_client,
making it possible for fluid_client to own that instance. Thanks for that
hint, just fixed in
https://github.com/FluidSynth/fluidsynth/commit/820448bafe190b4f5dbbfe71a1102752defae62d


Tom


2017-10-10 23:55 GMT+02:00 Ceresa Jean-Jacques <
jean-jacques.cer...@orange.fr>:

> Hi,
>
>
>
> There is a small memory leak in tcp command shell server in v 1.1.6 and
> may be still present in v1.1.7 ?.
>
>
>
> The memory leak is a lack of deletion of the command handler
> (fluid_cmd_handler_t).
>
> The command handler is created at client connection time, just before
> client creation task (in fluid_cmd.c-fluid_server_handle_connection())
> here:
>
> fluid_server_handle_connection(fluid_server_t* server, fluid_socket_t
> client_socket, char* addr)
> {
>
> ...
>
> fluid_cmd_handler_t* handler;
>
> handler = server->newclient(server->data, addr);
>
> ...
>
> }
>
>
>
> However, this command handler  seems  never deleted
> (delete_fluid_cmd_handler()) (imho).
>
>
>
> In this case this handler should be deleted on the following events:
>
> - (1) When the remote client quit, or when the server force client closing
> (i.e at client task destruction time).
> - (2) On error when calling 'client creation task' function.
> So, the fusing fix could be to call delete_fluid_cmd_handler() only one
> time (i.e when the client task is deleted) ((in 
> fluid_cmd.c-delete_fluid_client()),
> here:
> void delete_fluid_client(fluid_client_t* client)
> {
>   delete_fluid_cmd_handler(client->handler);
>
>   ...
>
>   ...
>
> }
>
>
>
> This is a fresh proposition and haven't not yet tested.
>
> Regards.
>
>
>
> jjc
>
>
>
> _______________________________________________
> fluid-dev mailing list
> fluid-dev@nongnu.org
> https://lists.nongnu.org/mailman/listinfo/fluid-dev
>
>
_______________________________________________
fluid-dev mailing list
fluid-dev@nongnu.org
https://lists.nongnu.org/mailman/listinfo/fluid-dev

Reply via email to