From b6f9b398308865fcb2c42995d4277e10ab9518e7 Mon Sep 17 00:00:00 2001 From: "David M. Lee" Date: Fri, 26 Jul 2013 17:42:08 +0000 Subject: [PATCH] Fix /stasis/res/app_replaced unit test. A typo in recent changes caused the JSON ApplicationReplaced message to fail to build, so the message wasn't being sent out the WebSocket. Related, the replaced application would also unregister itself when it disconnected, which would actually unregister the new application. This was also fixed. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@395527 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- res/stasis/app.c | 2 +- res/stasis_http/resource_events.c | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/res/stasis/app.c b/res/stasis/app.c index dfb6df3386..6f80ed64ab 100644 --- a/res/stasis/app.c +++ b/res/stasis/app.c @@ -221,7 +221,7 @@ void app_update(struct app *app, stasis_app_cb handler, void *data) msg = ast_json_pack("{s: s, s: s}", "type", "ApplicationReplaced", - "application", app_name); + "application", app->name); if (msg) { app_send(app, msg); } diff --git a/res/stasis_http/resource_events.c b/res/stasis_http/resource_events.c index 9e9bfab3e9..d632339c09 100644 --- a/res/stasis_http/resource_events.c +++ b/res/stasis_http/resource_events.c @@ -113,6 +113,19 @@ static void app_handler(void *data, const char *app_name, { struct event_session *session = data; int res; + const char *msg_type = S_OR( + ast_json_string_get(ast_json_object_get(message, "type")), + ""); + const char *msg_application = S_OR( + ast_json_string_get(ast_json_object_get(message, "application")), + ""); + + /* Determine if we've been replaced */ + if (strcmp(msg_type, "ApplicationReplaced") == 0 && + strcmp(msg_application, app_name) == 0) { + ao2_find(session->websocket_apps, msg_application, + OBJ_UNLINK | OBJ_NODATA); + } res = ast_json_object_set(message, "application", ast_json_string_create(app_name));