aboutsummaryrefslogtreecommitdiffstats
path: root/mumd/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'mumd/src/main.rs')
-rw-r--r--mumd/src/main.rs19
1 files changed, 10 insertions, 9 deletions
diff --git a/mumd/src/main.rs b/mumd/src/main.rs
index 812e7a1..6d435fa 100644
--- a/mumd/src/main.rs
+++ b/mumd/src/main.rs
@@ -11,7 +11,6 @@ use argparse::ArgumentParser;
use argparse::Store;
use argparse::StoreTrue;
use colored::*;
-use tokio::sync::oneshot;
use futures::join;
use log::*;
use mumble_protocol::control::ControlPacket;
@@ -72,16 +71,12 @@ async fn main() {
// Oneshot channel for setting UDP CryptState from control task
// For simplicity we don't deal with re-syncing, real applications would have to.
- let (crypt_state_sender, crypt_state_receiver) = oneshot::channel::<ClientCryptState>();
+ let (crypt_state_sender, crypt_state_receiver) = mpsc::channel::<ClientCryptState>(1); // crypt state should always be consumed before sending a new one
let (packet_sender, packet_receiver) = mpsc::unbounded_channel::<ControlPacket<Serverbound>>();
let (command_sender, command_receiver) = mpsc::unbounded_channel::<Command>();
let (command_response_sender, command_response_receiver) = mpsc::unbounded_channel::<Result<Option<CommandResponse>, ()>>();
let (connection_info_sender, connection_info_receiver) = watch::channel::<Option<ConnectionInfo>>(None);
- command_sender.send(Command::ChannelList).unwrap();
- command_sender.send(Command::ServerConnect{host: server_host, port: server_port, username: username.clone(), accept_invalid_cert});
- //command_sender.send(Command::ChannelJoin{channel_id: 1}).unwrap();
- command_sender.send(Command::ChannelList).unwrap();
let state = State::new(packet_sender, command_sender.clone(), connection_info_sender);
let state = Arc::new(Mutex::new(state));
@@ -104,7 +99,8 @@ async fn main() {
command_response_sender,
),
send_commands(
- command_sender
+ command_sender,
+ Command::ServerConnect{host: server_host, port: server_port, username: username.clone(), accept_invalid_cert}
),
receive_command_responses(
command_response_receiver,
@@ -112,8 +108,13 @@ async fn main() {
);
}
-async fn send_commands(command_sender: mpsc::UnboundedSender<Command>) {
- tokio::time::delay_for(Duration::from_secs(5)).await;
+async fn send_commands(command_sender: mpsc::UnboundedSender<Command>, connect_command: Command) {
+ command_sender.send(connect_command.clone());
+ tokio::time::delay_for(Duration::from_secs(2)).await;
+ command_sender.send(Command::ServerDisconnect);
+ tokio::time::delay_for(Duration::from_secs(2)).await;
+ command_sender.send(connect_command.clone());
+ tokio::time::delay_for(Duration::from_secs(2)).await;
command_sender.send(Command::ServerDisconnect);
debug!("Finished sending commands");