diff --git a/system/gd/rust/linux/stack/src/socket_manager.rs b/system/gd/rust/linux/stack/src/socket_manager.rs index f1ccf72f08b97166b24ca71b87c8eaeb111e26ac..d41fc13a953a0f6d7cc766ed313d457c6f591d09 100644 --- a/system/gd/rust/linux/stack/src/socket_manager.rs +++ b/system/gd/rust/linux/stack/src/socket_manager.rs @@ -575,6 +575,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