|
|
|
@ -313,7 +313,9 @@ async fn load_kernel(buffer: &Vec<u8>, control: &Rc<RefCell<kernel::Control>>, s
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async fn handle_connection(stream: &TcpStream, control: Rc<RefCell<kernel::Control>>) -> Result<()> {
|
|
|
|
|
async fn handle_connection(stream: &mut TcpStream, control: Rc<RefCell<kernel::Control>>) -> Result<()> {
|
|
|
|
|
stream.set_ack_delay(None);
|
|
|
|
|
|
|
|
|
|
if !expect(stream, b"ARTIQ coredev\n").await? {
|
|
|
|
|
return Err(Error::UnexpectedPattern);
|
|
|
|
|
}
|
|
|
|
@ -407,7 +409,7 @@ pub fn main(timer: GlobalTimer, cfg: Config) {
|
|
|
|
|
let connection = Rc::new(Semaphore::new(1, 1));
|
|
|
|
|
let terminate = Rc::new(Semaphore::new(0, 1));
|
|
|
|
|
loop {
|
|
|
|
|
let stream = TcpStream::accept(1381, 0x10_000, 0x10_000).await.unwrap();
|
|
|
|
|
let mut stream = TcpStream::accept(1381, 0x10_000, 0x10_000).await.unwrap();
|
|
|
|
|
|
|
|
|
|
if connection.try_wait().is_none() {
|
|
|
|
|
// there is an existing connection
|
|
|
|
@ -425,7 +427,7 @@ pub fn main(timer: GlobalTimer, cfg: Config) {
|
|
|
|
|
task::spawn(async move {
|
|
|
|
|
select_biased! {
|
|
|
|
|
_ = (async {
|
|
|
|
|
let _ = handle_connection(&stream, control.clone())
|
|
|
|
|
let _ = handle_connection(&mut stream, control.clone())
|
|
|
|
|
.await
|
|
|
|
|
.map_err(|e| warn!("connection terminated: {}", e));
|
|
|
|
|
if let Some(buffer) = &*idle_kernel {
|
|
|
|
|