summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid M. Lee <dlee@digium.com>2013-07-26 17:42:08 +0000
committerDavid M. Lee <dlee@digium.com>2013-07-26 17:42:08 +0000
commitb6f9b398308865fcb2c42995d4277e10ab9518e7 (patch)
tree55afbe94f436f38585831e1a7b2d8aa1935c98de
parent9a46c1d0199e5e3627665b68f88d4ec21f09d2a9 (diff)
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
-rw-r--r--res/stasis/app.c2
-rw-r--r--res/stasis_http/resource_events.c13
2 files changed, 14 insertions, 1 deletions
diff --git a/res/stasis/app.c b/res/stasis/app.c
index dfb6df338..6f80ed64a 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 9e9bfab3e..d632339c0 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));