Skip to content

Commit ce037fe

Browse files
committed
fix(vsock): read peer_buf_alloc from connect response
The Op::Response handler set state to Connected but never read buf_alloc or fwd_cnt from the response header. Since RawSocket initializes peer_buf_alloc to 0, the write path would block forever (0 >= 0 means "no peer buffer space available").
1 parent b5e2c97 commit ce037fe

1 file changed

Lines changed: 3 additions & 0 deletions

File tree

src/executor/vsock.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,9 @@ async fn vsock_run() {
119119
} else if op == Op::Response && type_ == Type::Stream {
120120
if raw.remote_cid == header_cid && raw.state == VsockState::Connecting {
121121
raw.state = VsockState::Connected;
122+
raw.peer_buf_alloc = header.buf_alloc.to_ne();
123+
raw.peer_fwd_cnt = header.fwd_cnt.to_ne();
124+
raw.tx_waker.wake();
122125
}
123126
} else if raw.remote_cid == header_cid {
124127
hdr = Some(*header);

0 commit comments

Comments
 (0)