aboutsummaryrefslogtreecommitdiffstats
path: root/mumd/src/network
diff options
context:
space:
mode:
authorRubens Brandao <git@rubens.io>2021-04-06 20:18:55 +0200
committerRubens Brandao <git@rubens.io>2021-04-09 20:06:21 +0200
commit7c5f60f210bfd05ea22d3a65f04e245989fdaade (patch)
tree101368eee4ae78f61f18dec40a14e42404731d75 /mumd/src/network
parent14b0ce912735243e566a95838e9ed0c93a2e7f3e (diff)
downloadmum-7c5f60f210bfd05ea22d3a65f04e245989fdaade.tar.gz
Resolved merge upstream conflicts
Diffstat (limited to 'mumd/src/network')
-rw-r--r--mumd/src/network/tcp.rs20
-rw-r--r--mumd/src/network/udp.rs4
2 files changed, 14 insertions, 10 deletions
diff --git a/mumd/src/network/tcp.rs b/mumd/src/network/tcp.rs
index c5eded2..7606987 100644
--- a/mumd/src/network/tcp.rs
+++ b/mumd/src/network/tcp.rs
@@ -10,10 +10,10 @@ use mumble_protocol::control::{msgs, ClientControlCodec, ControlCodec, ControlPa
use mumble_protocol::crypt::ClientCryptState;
use mumble_protocol::voice::VoicePacket;
use mumble_protocol::{Clientbound, Serverbound};
-use std::{collections::HashMap, sync::RwLock};
+use std::collections::HashMap;
use std::convert::{Into, TryInto};
use std::net::SocketAddr;
-use std::sync::Arc;
+use std::sync::{Arc, RwLock};
use tokio::net::TcpStream;
use tokio::sync::{mpsc, watch, Mutex};
use tokio::time::{self, Duration};
@@ -103,13 +103,17 @@ pub async fn handle(
.await?;
// Handshake (omitting `Version` message for brevity)
- let state_lock = state.read().unwrap();
- let username = state_lock.username().unwrap().to_string();
- let password = state_lock.password().map(|x| x.to_string());
+ let (username, password) = {
+ let state_lock = state.read().unwrap();
+ (state_lock.username().unwrap().to_string(),
+ state_lock.password().map(|x| x.to_string()))
+ };
authenticate(&mut sink, username, password).await?;
- let phase_watcher = state_lock.phase_receiver();
- let input_receiver = state_lock.audio_input().receiver();
- drop(state_lock);
+ let (phase_watcher, input_receiver) = {
+ let state_lock = state.read().unwrap();
+ (state_lock.phase_receiver(),
+ state_lock.audio_input().receiver())
+ };
let event_queue = TcpEventQueue::new();
info!("Logging in...");
diff --git a/mumd/src/network/udp.rs b/mumd/src/network/udp.rs
index 11a3f27..3ca77af 100644
--- a/mumd/src/network/udp.rs
+++ b/mumd/src/network/udp.rs
@@ -9,12 +9,12 @@ use mumble_protocol::crypt::ClientCryptState;
use mumble_protocol::ping::{PingPacket, PongPacket};
use mumble_protocol::voice::VoicePacket;
use mumble_protocol::Serverbound;
-use std::{collections::HashMap, sync::RwLock};
+use std::collections::HashMap;
use std::convert::TryFrom;
use std::net::{Ipv6Addr, SocketAddr};
use std::rc::Rc;
use std::sync::atomic::{AtomicU64, Ordering};
-use std::sync::Arc;
+use std::sync::{Arc, RwLock};
use tokio::{join, net::UdpSocket};
use tokio::sync::{mpsc, watch, Mutex};
use tokio::time::{interval, Duration};