Fixed sending to the client
This commit is contained in:
@@ -39,19 +39,22 @@ pub fn leave(server: &Arc<Server>, client: &Client, channel_id: &str) -> crate::
|
|||||||
|
|
||||||
pub fn voice(server: &Arc<Server>, client: &Client, data: &[u8]) -> crate::Result<()> {
|
pub fn voice(server: &Arc<Server>, client: &Client, data: &[u8]) -> crate::Result<()> {
|
||||||
let v = server.voice.lock().unwrap();
|
let v = server.voice.lock().unwrap();
|
||||||
let Some((channel_id, voice_id)) = v.find_user(&client.get_uuid()?) else {
|
let user_id = client.get_uuid()?;
|
||||||
|
let Some((channel_id, voice_id)) = v.find_user(&user_id) else {
|
||||||
return Ok(());
|
return Ok(());
|
||||||
};
|
};
|
||||||
|
|
||||||
let targets = v.get(&channel_id);
|
let mut targets = v.get(&channel_id);
|
||||||
|
|
||||||
|
if let Some(pos) = targets.iter().position(|x| *x == &user_id) {
|
||||||
|
targets.remove(pos);
|
||||||
|
}
|
||||||
|
|
||||||
let prefix = voice_id.to_le_bytes();
|
let prefix = voice_id.to_le_bytes();
|
||||||
let mut payload = Vec::with_capacity(prefix.len() + data.len());
|
let mut payload = Vec::with_capacity(prefix.len() + data.len());
|
||||||
payload.extend_from_slice(&prefix);
|
payload.extend_from_slice(&prefix);
|
||||||
payload.extend_from_slice(data);
|
payload.extend_from_slice(data);
|
||||||
|
|
||||||
client.send_bin(&payload)?;
|
|
||||||
|
|
||||||
server.broadcast_bin_to(&targets, payload)?;
|
server.broadcast_bin_to(&targets, payload)?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|||||||
Reference in New Issue
Block a user