Continue events when ARI WebSocket reconnects
authorDavid M. Lee <dlee@digium.com>
Tue, 23 Jul 2013 13:42:46 +0000 (13:42 +0000)
committerDavid M. Lee <dlee@digium.com>
Tue, 23 Jul 2013 13:42:46 +0000 (13:42 +0000)
commitf6a227a45111d5d0e021de64799f62da6d8ae7ac
treef27976b9d96cdee85907fbb9c44f6a25661eeafd
parentfec667646fb63fb0d55d26cf76ade739dc62bcfe
Continue events when ARI WebSocket reconnects

This patch addresses a bug in the /ari/events WebSocket in handling
reconnects.

When a Stasis application's associated WebSocket was disconnected and
reconnected, it would not receive events for any channels or bridges
it was subscribed to.

The fix was to lazily clean up Stasis application registrations,
instead of removing them as soon as the WebSocket goes away.

When an application is unregistered at the WebSocket level, the
underlying application is simply deactivated. If the application
WebSocket is reconnected, the application is reactivated for the new
connection.

To avoid memory leaks from lingering, unused application, the
application list is cleaned up whenever new applications are
registered/unregistered.

(closes issue ASTERISK-21970)
Review: https://reviewboard.asterisk.org/r/2678/

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@395120 65c4cc65-6c06-0410-ace0-fbb531ad65f3
res/res_stasis.c
res/stasis/app.c
res/stasis/app.h