Hi,

I recently upgrade mpd, and have now trouble with the raop_output.
When raop_output is the only output present, mpd crashes on every
'next song', or 'pause'/'play'.
I trace this to a raop_session inbalance.
I tried to fix this:

raop_output: fixed raop_session inbalance

raop_session_free must be called from raop_output_finish,
not from raop_output_remove.
In raop_output_remove, do close the ntp_server & control port.

Signed-off-by: Kurt Van Dijck <kurt.van.di...@skynet.be>

diff --git a/src/output/raop_output_plugin.c b/src/output/raop_output_plugin.c
index 68d6897..6177b9b 100644
--- a/src/output/raop_output_plugin.c
+++ b/src/output/raop_output_plugin.c
@@ -770,6 +770,11 @@ raop_output_finish(struct audio_output *ao)
        g_mutex_free(rd->control_mutex);
        ao_base_finish(&rd->base);
        g_free(rd);
+
+       if (raop_session->raop_list == NULL) {
+               raop_session_free(raop_session);
+               raop_session = NULL;
+       }
 }
 
 #define RAOP_VOLUME_MIN -30
@@ -870,8 +875,9 @@ raop_output_remove(struct raop_data *rd)
        g_mutex_unlock(raop_session->list_mutex);
 
        if (raop_session->raop_list == NULL) {
-               raop_session_free(raop_session);
-               raop_session = NULL;
+               ntp_server_close(&raop_session->ntp);
+               close(raop_session->ctrl.fd);
+               raop_session->ctrl.fd = -1;
        }
 }
 

------------------------------------------------------------------------------
Virtualization & Cloud Management Using Capacity Planning
Cloud computing makes use of virtualization - but cloud computing 
also focuses on allowing computing to be delivered as a service.
http://www.accelacomm.com/jaw/sfnl/114/51521223/
_______________________________________________
Musicpd-dev-team mailing list
Musicpd-dev-team@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/musicpd-dev-team

Reply via email to