diff --git a/system/gd/rust/linux/stack/src/socket_manager.rs b/system/gd/rust/linux/stack/src/socket_manager.rs index b047e27f4211fa043900036d417f97209967612f..7916aa1d7fa12a09a66ba822c90eabe74064fdd0 100644 --- a/system/gd/rust/linux/stack/src/socket_manager.rs +++ b/system/gd/rust/linux/stack/src/socket_manager.rs @@ -578,6 +578,14 @@ impl BluetoothSocketManager { log::debug!("service {} is blocked by admin policy", uuid); return SocketResult::new(BtStatus::AuthRejected, INVALID_SOCKET_ID); } + if self + .listening + .iter() + .any(|(_, v)| v.iter().any(|s| s.uuid.map_or(false, |u| u == uuid))) + { + log::warn!("Service {} already exists", uuid); + return SocketResult::new(BtStatus::Fail, INVALID_SOCKET_ID); + } } // Create listener socket pair