mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-10-31 22:25:33 -04:00
Do tidy up on disconnection.
Only clear IO related stuff if this free() was triggered deliberatly (i.e. not by server side disconnect) git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/coling@2411 fefdeb5f-60dc-0310-8127-8f9354f1896f
This commit is contained in:
parent
9216684691
commit
3767cdb6d1
2 changed files with 11 additions and 1 deletions
|
|
@ -344,6 +344,7 @@ static void rtsp_cb(pa_rtsp_client *rtsp, pa_rtsp_state state, pa_headerlist* he
|
|||
case STATE_DISCONNECTED:
|
||||
pa_assert(c->closed_callback);
|
||||
pa_log_debug("RTSP channel closed");
|
||||
c->rtsp = NULL;
|
||||
if (c->fd > 0) {
|
||||
pa_close(c->fd);
|
||||
c->fd = -1;
|
||||
|
|
@ -400,6 +401,7 @@ void pa_raop_client_free(pa_raop_client* c)
|
|||
pa_assert(c);
|
||||
|
||||
pa_xfree(c->buffer);
|
||||
if (c->rtsp)
|
||||
pa_rtsp_client_free(c->rtsp);
|
||||
pa_xfree(c->host);
|
||||
pa_xfree(c);
|
||||
|
|
|
|||
|
|
@ -151,6 +151,10 @@ void pa_rtsp_client_free(pa_rtsp_client* c) {
|
|||
if (c) {
|
||||
if (c->sc)
|
||||
pa_socket_client_unref(c->sc);
|
||||
if (c->ioline)
|
||||
pa_ioline_close(c->ioline);
|
||||
else if (c->io)
|
||||
pa_iochannel_free(c->io);
|
||||
|
||||
pa_xfree(c->url);
|
||||
pa_xfree(c->localip);
|
||||
|
|
@ -227,6 +231,10 @@ static void line_callback(pa_ioline *line, const char *s, void *userdata) {
|
|||
pa_assert(c->callback);
|
||||
|
||||
if (!s) {
|
||||
/* Keep the ioline/iochannel open as they will be freed automatically */
|
||||
c->ioline = NULL;
|
||||
c->io = NULL;
|
||||
pa_rtsp_client_free(c);
|
||||
c->callback(c, STATE_DISCONNECTED, NULL, c->userdata);
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue