aboutsummaryrefslogtreecommitdiffstats
path: root/mumd/src/main.rs
diff options
context:
space:
mode:
authorGustav Sörnäs <gustav@sornas.net>2021-03-30 16:15:53 +0200
committerGustav Sörnäs <gustav@sornas.net>2021-03-30 16:15:53 +0200
commit1d331f0707eaa4a056aa6261410fb1edb63097b7 (patch)
tree3beca0c239306bd1ed6f9ee792abd5a855e190f7 /mumd/src/main.rs
parent79702d18bbd23df2faf0c00b0d9537ce26508f6b (diff)
downloadmum-1d331f0707eaa4a056aa6261410fb1edb63097b7.tar.gz
report tcp errors all the way
Diffstat (limited to 'mumd/src/main.rs')
-rw-r--r--mumd/src/main.rs20
1 files changed, 14 insertions, 6 deletions
diff --git a/mumd/src/main.rs b/mumd/src/main.rs
index cd53d4a..d7bc2c0 100644
--- a/mumd/src/main.rs
+++ b/mumd/src/main.rs
@@ -8,11 +8,11 @@ mod state;
use crate::state::State;
-use futures_util::{SinkExt, StreamExt};
+use futures_util::{select, FutureExt, SinkExt, StreamExt};
use log::*;
use mumlib::command::{Command, CommandResponse};
use mumlib::setup_logger;
-use tokio::{join, net::{UnixListener, UnixStream}, sync::{mpsc, oneshot}};
+use tokio::{net::{UnixListener, UnixStream}, sync::{mpsc, oneshot}};
use tokio_util::codec::{FramedRead, FramedWrite, LengthDelimitedCodec};
use bytes::{BufMut, BytesMut};
@@ -64,10 +64,18 @@ async fn main() {
}
};
- join!(
- client::handle(state, command_receiver),
- receive_commands(command_sender),
- );
+ let run = select! {
+ r = client::handle(state, command_receiver).fuse() => r,
+ _ = receive_commands(command_sender).fuse() => Ok(()),
+ };
+
+ match run {
+ Err(e) => {
+ error!("mumd: {}", e);
+ std::process::exit(1);
+ }
+ _ => {}
+ }
}
async fn receive_commands(