Loading android/app/src/com/android/bluetooth/le_audio/LeAudioService.java +35 −13 Original line number Diff line number Diff line Loading @@ -448,6 +448,27 @@ public class LeAudioService extends ProfileService { return mVolumeControlService.getAudioDeviceGroupVolume(groupId); } LeAudioDeviceDescriptor createDeviceDescriptor(BluetoothDevice device) { LeAudioDeviceDescriptor descriptor = mDeviceDescriptors.get(device); if (descriptor == null) { // Limit the maximum number of devices to avoid DoS attack if (mDeviceDescriptors.size() >= MAX_LE_AUDIO_DEVICES) { Log.e(TAG, "Maximum number of LeAudio state machines reached: " + MAX_LE_AUDIO_DEVICES); return null; } mDeviceDescriptors.put(device, new LeAudioDeviceDescriptor()); descriptor = mDeviceDescriptors.get(device); Log.d(TAG, "Created descriptor for device: " + device); } else { Log.w(TAG, "Device: " + device + ", already exists"); } return descriptor; } public boolean connect(BluetoothDevice device) { if (DBG) { Log.d(TAG, "connect(): " + device); Loading @@ -464,19 +485,10 @@ public class LeAudioService extends ProfileService { } synchronized (mGroupLock) { LeAudioDeviceDescriptor descriptor = mDeviceDescriptors.get(device); if (descriptor == null) { // Limit the maximum number of devices to avoid DoS attack if (mDeviceDescriptors.size() >= MAX_LE_AUDIO_DEVICES) { Log.e(TAG, "Maximum number of LeAudio state machines reached: " + MAX_LE_AUDIO_DEVICES); if (createDeviceDescriptor(device) == null) { return false; } mDeviceDescriptors.put(device, new LeAudioDeviceDescriptor()); } LeAudioStateMachine sm = getOrCreateStateMachine(device); if (sm == null) { Log.e(TAG, "Ignored connect request for " + device + " : no state machine"); Loading Loading @@ -2183,9 +2195,19 @@ public class LeAudioService extends ProfileService { LeAudioDeviceDescriptor deviceDescriptor = getDeviceDescriptor(device); if (deviceDescriptor == null) { Log.e(TAG, "handleGroupNodeAdded: No valid descriptor for device: " + device); deviceDescriptor = createDeviceDescriptor(device); if (deviceDescriptor == null) { Log.e(TAG, "handleGroupNodeAdded: Can't create descriptor for added from" + " storage device: " + device); return; } LeAudioStateMachine sm = getOrCreateStateMachine(device); if (getOrCreateStateMachine(device) == null) { Log.e(TAG, "Can't get state machine for device: " + device); return; } } deviceDescriptor.mGroupId = groupId; LeAudioGroupDescriptor descriptor = mGroupDescriptors.get(groupId); Loading Loading
android/app/src/com/android/bluetooth/le_audio/LeAudioService.java +35 −13 Original line number Diff line number Diff line Loading @@ -448,6 +448,27 @@ public class LeAudioService extends ProfileService { return mVolumeControlService.getAudioDeviceGroupVolume(groupId); } LeAudioDeviceDescriptor createDeviceDescriptor(BluetoothDevice device) { LeAudioDeviceDescriptor descriptor = mDeviceDescriptors.get(device); if (descriptor == null) { // Limit the maximum number of devices to avoid DoS attack if (mDeviceDescriptors.size() >= MAX_LE_AUDIO_DEVICES) { Log.e(TAG, "Maximum number of LeAudio state machines reached: " + MAX_LE_AUDIO_DEVICES); return null; } mDeviceDescriptors.put(device, new LeAudioDeviceDescriptor()); descriptor = mDeviceDescriptors.get(device); Log.d(TAG, "Created descriptor for device: " + device); } else { Log.w(TAG, "Device: " + device + ", already exists"); } return descriptor; } public boolean connect(BluetoothDevice device) { if (DBG) { Log.d(TAG, "connect(): " + device); Loading @@ -464,19 +485,10 @@ public class LeAudioService extends ProfileService { } synchronized (mGroupLock) { LeAudioDeviceDescriptor descriptor = mDeviceDescriptors.get(device); if (descriptor == null) { // Limit the maximum number of devices to avoid DoS attack if (mDeviceDescriptors.size() >= MAX_LE_AUDIO_DEVICES) { Log.e(TAG, "Maximum number of LeAudio state machines reached: " + MAX_LE_AUDIO_DEVICES); if (createDeviceDescriptor(device) == null) { return false; } mDeviceDescriptors.put(device, new LeAudioDeviceDescriptor()); } LeAudioStateMachine sm = getOrCreateStateMachine(device); if (sm == null) { Log.e(TAG, "Ignored connect request for " + device + " : no state machine"); Loading Loading @@ -2183,9 +2195,19 @@ public class LeAudioService extends ProfileService { LeAudioDeviceDescriptor deviceDescriptor = getDeviceDescriptor(device); if (deviceDescriptor == null) { Log.e(TAG, "handleGroupNodeAdded: No valid descriptor for device: " + device); deviceDescriptor = createDeviceDescriptor(device); if (deviceDescriptor == null) { Log.e(TAG, "handleGroupNodeAdded: Can't create descriptor for added from" + " storage device: " + device); return; } LeAudioStateMachine sm = getOrCreateStateMachine(device); if (getOrCreateStateMachine(device) == null) { Log.e(TAG, "Can't get state machine for device: " + device); return; } } deviceDescriptor.mGroupId = groupId; LeAudioGroupDescriptor descriptor = mGroupDescriptors.get(groupId); Loading