mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2026-04-10 08:21:03 -04:00
module-avb: fix Milan lock entity error response and re-lock timeout
Fix two bugs in handle_cmd_lock_entity_milan_v12(): 1. When server_find_descriptor() returns NULL, reply_status() was called with the AEM packet pointer instead of the full ethernet frame, corrupting the response ethernet header. 2. When refreshing an existing lock, the expire timeout was extended by raw seconds (60) instead of nanoseconds (60 * SPA_NSEC_PER_SEC), causing the lock to expire almost immediately after re-lock. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
4e62826e01
commit
d9821d09c7
1 changed files with 2 additions and 2 deletions
|
|
@ -99,7 +99,7 @@ int handle_cmd_lock_entity_milan_v12(struct aecp *aecp, int64_t now, const void
|
||||||
|
|
||||||
desc = server_find_descriptor(server, desc_type, desc_id);
|
desc = server_find_descriptor(server, desc_type, desc_id);
|
||||||
if (desc == NULL)
|
if (desc == NULL)
|
||||||
return reply_status(aecp, AVB_AECP_AEM_STATUS_NO_SUCH_DESCRIPTOR, p, len);
|
return reply_status(aecp, AVB_AECP_AEM_STATUS_NO_SUCH_DESCRIPTOR, m, len);
|
||||||
|
|
||||||
entity_state = desc->ptr;
|
entity_state = desc->ptr;
|
||||||
lock = &entity_state->state.lock_state;
|
lock = &entity_state->state.lock_state;
|
||||||
|
|
@ -148,7 +148,7 @@ int handle_cmd_lock_entity_milan_v12(struct aecp *aecp, int64_t now, const void
|
||||||
// If the lock is taken again by device
|
// If the lock is taken again by device
|
||||||
if (ctrler_id == lock->locked_id) {
|
if (ctrler_id == lock->locked_id) {
|
||||||
lock->base_info.expire_timeout +=
|
lock->base_info.expire_timeout +=
|
||||||
AECP_AEM_LOCK_ENTITY_EXPIRE_TIMEOUT_SECOND;
|
AECP_AEM_LOCK_ENTITY_EXPIRE_TIMEOUT_SECOND * SPA_NSEC_PER_SEC;
|
||||||
|
|
||||||
lock->is_locked = true;
|
lock->is_locked = true;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue