Skip to content

Commit 8be375d

Browse files
committed
fix review comment
Signed-off-by: YamasouA <akiakiskyhand@gmail.com>
1 parent 07afe2a commit 8be375d

File tree

2 files changed

+48
-19
lines changed

2 files changed

+48
-19
lines changed

crates/libcontainer/src/process/channel.rs

Lines changed: 48 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,15 @@ use crate::process::message::{Message, MountMsg};
99

1010
#[derive(Debug, thiserror::Error)]
1111
pub enum ChannelError {
12-
#[error("received unexpected message: {received:?}, expected: {expected:?}")]
12+
#[error(
13+
"received unexpected message: {received:?}{expected_suffix}",
14+
expected_suffix = .expected
15+
.as_ref()
16+
.map(|msg| format!(", expected: {msg:?}"))
17+
.unwrap_or_default()
18+
)]
1319
UnexpectedMessage {
14-
expected: Box<Message>,
20+
expected: Option<Box<Message>>,
1521
received: Box<Message>,
1622
},
1723
#[error("failed to receive. {msg:?}. {source:?}")]
@@ -141,7 +147,7 @@ impl MainReceiver {
141147
Message::ExecFailed(err) => Err(ChannelError::ExecError(err)),
142148
Message::OtherError(err) => Err(ChannelError::OtherError(err)),
143149
msg => Err(ChannelError::UnexpectedMessage {
144-
expected: Box::new(Message::IntermediateReady(0)),
150+
expected: Some(Box::new(Message::IntermediateReady(0))),
145151
received: Box::new(msg),
146152
}),
147153
}
@@ -158,7 +164,7 @@ impl MainReceiver {
158164
match msg {
159165
Message::WriteMapping => Ok(()),
160166
msg => Err(ChannelError::UnexpectedMessage {
161-
expected: Box::new(Message::WriteMapping),
167+
expected: Some(Box::new(Message::WriteMapping)),
162168
received: Box::new(msg),
163169
}),
164170
}
@@ -176,11 +182,7 @@ impl MainReceiver {
176182
match msg {
177183
Message::MountFdPlease(req) => Ok(req),
178184
msg => Err(ChannelError::UnexpectedMessage {
179-
expected: Box::new(Message::MountFdPlease(MountMsg {
180-
source: String::new(),
181-
idmap: None,
182-
recursive: false,
183-
})),
185+
expected: None,
184186
received: Box::new(msg),
185187
}),
186188
}
@@ -218,7 +220,7 @@ impl MainReceiver {
218220
Ok(fd)
219221
}
220222
msg => Err(ChannelError::UnexpectedMessage {
221-
expected: Box::new(Message::SeccompNotify),
223+
expected: Some(Box::new(Message::SeccompNotify)),
222224
received: Box::new(msg),
223225
}),
224226
}
@@ -235,7 +237,7 @@ impl MainReceiver {
235237
match msg {
236238
Message::SetupNetworkDeviceReady => Ok(()),
237239
msg => Err(ChannelError::UnexpectedMessage {
238-
expected: Box::new(Message::SetupNetworkDeviceReady),
240+
expected: Some(Box::new(Message::SetupNetworkDeviceReady)),
239241
received: Box::new(msg),
240242
}),
241243
}
@@ -258,7 +260,7 @@ impl MainReceiver {
258260
"error in executing process : {err}"
259261
))),
260262
msg => Err(ChannelError::UnexpectedMessage {
261-
expected: Box::new(Message::InitReady),
263+
expected: Some(Box::new(Message::InitReady)),
262264
received: Box::new(msg),
263265
}),
264266
}
@@ -275,7 +277,7 @@ impl MainReceiver {
275277
match msg {
276278
Message::HookRequest => Ok(()),
277279
msg => Err(ChannelError::UnexpectedMessage {
278-
expected: Box::new(Message::HookRequest),
280+
expected: Some(Box::new(Message::HookRequest)),
279281
received: Box::new(msg),
280282
}),
281283
}
@@ -333,7 +335,7 @@ impl IntermediateReceiver {
333335
match msg {
334336
Message::MappingWritten => Ok(()),
335337
msg => Err(ChannelError::UnexpectedMessage {
336-
expected: Box::new(Message::MappingWritten),
338+
expected: Some(Box::new(Message::MappingWritten)),
337339
received: Box::new(msg),
338340
}),
339341
}
@@ -411,7 +413,7 @@ impl InitReceiver {
411413
match msg {
412414
Message::SeccompNotifyDone => Ok(()),
413415
msg => Err(ChannelError::UnexpectedMessage {
414-
expected: Box::new(Message::SeccompNotifyDone),
416+
expected: Some(Box::new(Message::SeccompNotifyDone)),
415417
received: Box::new(msg),
416418
}),
417419
}
@@ -430,7 +432,7 @@ impl InitReceiver {
430432
match msg {
431433
Message::MoveNetworkDevice(addr) => Ok(addr),
432434
msg => Err(ChannelError::UnexpectedMessage {
433-
expected: Box::new(Message::WriteMapping),
435+
expected: Some(Box::new(Message::WriteMapping)),
434436
received: Box::new(msg),
435437
}),
436438
}
@@ -447,7 +449,7 @@ impl InitReceiver {
447449
match msg {
448450
Message::HookDone => Ok(()),
449451
msg => Err(ChannelError::UnexpectedMessage {
450-
expected: Box::new(Message::HookDone),
452+
expected: Some(Box::new(Message::HookDone)),
451453
received: Box::new(msg),
452454
}),
453455
}
@@ -477,7 +479,7 @@ impl InitReceiver {
477479
}
478480
Message::MountFdError(err) => Err(ChannelError::MountFdError(err)),
479481
msg => Err(ChannelError::UnexpectedMessage {
480-
expected: Box::new(Message::MountFdReply),
482+
expected: Some(Box::new(Message::MountFdReply)),
481483
received: Box::new(msg),
482484
}),
483485
}
@@ -616,6 +618,34 @@ mod tests {
616618
Ok(())
617619
}
618620

621+
#[test]
622+
#[serial]
623+
fn test_channel_mount_fd_request() -> Result<()> {
624+
let (sender, receiver) = &mut main_channel()?;
625+
let request = MountMsg {
626+
source: "/proc/self/ns/user".to_string(),
627+
idmap: Some(crate::process::message::MountIdMap {
628+
uid_mappings: vec![],
629+
gid_mappings: vec![],
630+
recursive: true,
631+
}),
632+
};
633+
634+
sender.request_mount_fd(request.clone())?;
635+
let received = receiver.wait_for_mount_fd_request()?;
636+
637+
assert_eq!(received.source, request.source);
638+
let received_idmap = received.idmap.context("missing idmap in mount request")?;
639+
let request_idmap = request.idmap.context("missing idmap in mount request")?;
640+
assert_eq!(received_idmap.recursive, request_idmap.recursive);
641+
assert_eq!(received_idmap.uid_mappings, request_idmap.uid_mappings);
642+
assert_eq!(received_idmap.gid_mappings, request_idmap.gid_mappings);
643+
644+
sender.close()?;
645+
receiver.close()?;
646+
Ok(())
647+
}
648+
619649
#[test]
620650
#[serial]
621651
fn test_channel_init_ready() -> Result<()> {

crates/libcontainer/src/process/message.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ impl fmt::Display for Message {
5252
pub struct MountMsg {
5353
pub source: String,
5454
pub idmap: Option<MountIdMap>,
55-
pub recursive: bool,
5655
}
5756

5857
#[derive(Debug, Serialize, Deserialize, Clone)]

0 commit comments

Comments
 (0)