From 76e780625115632b5dda525c36210cca9062a2fa Mon Sep 17 00:00:00 2001 From: hackerman-kl Date: Sat, 25 Apr 2026 13:19:27 +0200 Subject: [PATCH] milan-avb: cmd-get-set-stream-info: treat LV registrar as still registering --- .../cmd-get-set-stream-info.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/modules/module-avb/aecp-aem-cmds-resps/cmd-get-set-stream-info.c b/src/modules/module-avb/aecp-aem-cmds-resps/cmd-get-set-stream-info.c index 0cd5ac68d..4f14858ab 100644 --- a/src/modules/module-avb/aecp-aem-cmds-resps/cmd-get-set-stream-info.c +++ b/src/modules/module-avb/aecp-aem-cmds-resps/cmd-get-set-stream-info.c @@ -120,18 +120,17 @@ static void populate_input_response(struct aecp *aecp, settled = (si->acmp_sta.probing_status == 3); (void)settled; - /* Milan Section 5.3.8.8 / Table 5.10 REGISTERING bit: Talker Advertise OR - * Talker Failed matching the saved SRP params is currently registered. - * tastream_attr / tfstream_attr are the foreign declarations we observe; - * registrar IN means we've heard them on the wire. - * - * For listeners, only lstream_attr and tfstream_attr are created in - * server_create_stream — tastream_attr.mrp is NULL until/unless we - * later wire in talker-advertise observation. Guard the deref. */ + /* Milan Section 5.3.8.8 / Table 5.10 REGISTERING bit: Talker Advertise/Failed + * matching the saved SRP params is currently registered. Treat IN and + * LV alike — LV is the 1-s leave-timer transient and recovers on the + * next JoinIn (matches the talker-side listener_observed semantics + * which stay true until LV→MT). */ ta_observed = (taattr->mrp != NULL) && - (avb_mrp_attribute_get_registrar_state(taattr->mrp) == AVB_MRP_IN); + (avb_mrp_attribute_get_registrar_state(taattr->mrp) == AVB_MRP_IN || + avb_mrp_attribute_get_registrar_state(taattr->mrp) == AVB_MRP_LV); tf_observed = (tfattr->mrp != NULL) && - (avb_mrp_attribute_get_registrar_state(tfattr->mrp) == AVB_MRP_IN); + (avb_mrp_attribute_get_registrar_state(tfattr->mrp) == AVB_MRP_IN || + avb_mrp_attribute_get_registrar_state(tfattr->mrp) == AVB_MRP_LV); registering = ta_observed || tf_observed; /* Stream Input — expose the identity fields unconditionally so a