]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
app_queue: Allow stasis message filtering to work.
authorJoshua C. Colp <jcolp@sangoma.com>
Fri, 10 Oct 2025 15:53:42 +0000 (12:53 -0300)
committerAsterisk Development Team <asteriskteam@digium.com>
Thu, 30 Oct 2025 16:05:56 +0000 (16:05 +0000)
The app_queue module subscribes on a per-dialed agent basis to both
the bridge all and channel all topics to keep apprised of things going
on involving them. This subscription has associated state that must
be cleaned up when the subscription ends. This was done by setting
a default router callback that only had logic to handle the case
where the subscription ends. By using the default router callback
all filtering for the subscription was disabled, causing unrelated
messages to get published and handled by it.

This change makes it so that an explicit route is added for the
message type used for the message indicating the subscription has
ended and removes the default router callback. This allows message
filtering to occur on publishing reducing the messages to app_queue
to only those it is interested in.

apps/app_queue.c

index a9caae36eb8ca7e91d554acc9d1a7f1454d3275a..94c808d508faa843108c80e47d96227353fa71bd 100644 (file)
@@ -7038,7 +7038,7 @@ static int setup_stasis_subs(struct queue_ent *qe, struct ast_channel *peer, str
                        handle_blind_transfer, queue_data);
        stasis_message_router_add(queue_data->bridge_router, ast_attended_transfer_type(),
                        handle_attended_transfer, queue_data);
-       stasis_message_router_set_default(queue_data->bridge_router,
+       stasis_message_router_add(queue_data->bridge_router, stasis_subscription_change_type(),
                        queue_bridge_cb, queue_data);
 
        queue_data->channel_router = stasis_message_router_create_pool(ast_channel_topic_all());
@@ -7060,7 +7060,7 @@ static int setup_stasis_subs(struct queue_ent *qe, struct ast_channel *peer, str
                        handle_hangup, queue_data);
        stasis_message_router_add(queue_data->channel_router, ast_channel_masquerade_type(),
                        handle_masquerade, queue_data);
-       stasis_message_router_set_default(queue_data->channel_router,
+       stasis_message_router_add(queue_data->channel_router, stasis_subscription_change_type(),
                        queue_channel_cb, queue_data);
 
        return 0;