[bluez/bluez] a14d59: transport: don't disconnect A2DP if canceling Acqu...

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



  Branch: refs/heads/master
  Home:   https://github.com/bluez/bluez
  Commit: a14d59725ef35d91b8504770046c701d0a2efe07
      https://github.com/bluez/bluez/commit/a14d59725ef35d91b8504770046c701d0a2efe07
  Author: Pauli Virtanen <pav@xxxxxx>
  Date:   2024-11-04 (Mon, 04 Nov 2024)

  Changed paths:
    M profiles/audio/transport.c

  Log Message:
  -----------
  transport: don't disconnect A2DP if canceling Acquire() with Release()

User can cancel transport acquire by calling Release() while Acquire()
is in progress. This calls a2dp_cancel() which sends AVDTP_ABORT_CMD,
forcing AVDTP state transition to IDLE, and A2DP profile disconnects.

However, Release()/Acquire() should only result to transitions between
STREAMING/OPEN.  The expected behavior is that either these calls return
error, or they block until the target state is reached.

Fix by: Release() during pending Acquire() first sends error reply to
the Acquire. Then it waits for START to complete, then sends SUSPEND,
and after that completes, then it replies.

This also fixes SetConfiguration() after canceled Acquire(), which
previously did not work due to AVDTP disconnect. Now it does
START/SUSPEND -> CLOSE -> reconfigure.


  Commit: 664a5d3785a1a57989d236b6fd649321a39451f5
      https://github.com/bluez/bluez/commit/664a5d3785a1a57989d236b6fd649321a39451f5
  Author: Pauli Virtanen <pav@xxxxxx>
  Date:   2024-11-04 (Mon, 04 Nov 2024)

  Changed paths:
    M profiles/audio/a2dp.c

  Log Message:
  -----------
  a2dp: don't change setup sep when it is reconfiguring

If a2dp_resume/a2dp_suspend are called while setup is being
reconfigured, they make the reconfiguration use wrong SEP.  This occurs
if transport Acquire/Release are called while reconfiguration is waiting
for CLOSE_RSP.

Fix by failing a2dp_resume/suspend early without changing the setup, if
it is reconfiguring.

Such resume/suspend calls would in any case fail, because
avdtp_close(stream) has been done, so avdtp_suspend/resume would return
error.


Compare: https://github.com/bluez/bluez/compare/0845b8f6ef2a...664a5d3785a1

To unsubscribe from these emails, change your notification settings at https://github.com/bluez/bluez/settings/notifications




[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux