diff --git a/src/executor/vsock.rs b/src/executor/vsock.rs index f992a478d5..d4a470fd50 100644 --- a/src/executor/vsock.rs +++ b/src/executor/vsock.rs @@ -119,6 +119,9 @@ async fn vsock_run() { } else if op == Op::Response && type_ == Type::Stream { if raw.remote_cid == header_cid && raw.state == VsockState::Connecting { raw.state = VsockState::Connected; + raw.peer_buf_alloc = header.buf_alloc.to_ne(); + raw.peer_fwd_cnt = header.fwd_cnt.to_ne(); + raw.tx_waker.wake(); } } else if raw.remote_cid == header_cid { hdr = Some(*header); diff --git a/src/fd/socket/vsock.rs b/src/fd/socket/vsock.rs index 949a47112d..bd77010d06 100644 --- a/src/fd/socket/vsock.rs +++ b/src/fd/socket/vsock.rs @@ -161,7 +161,7 @@ impl ObjectInterface for Socket { const HEADER_SIZE: usize = mem::size_of::(); let port = VSOCK_MAP.lock().connect(ep.port, ep.cid)?; self.port = port; - self.port = ep.cid; + self.cid = ep.cid; future::poll_fn(|cx| { if let Some(mut driver_guard) = hardware::get_vsock_driver().unwrap().try_lock()