runtime mgmt: avoid passing incomplete log to core_log

This commit is contained in:
occheung 2024-09-19 17:16:18 +08:00
parent 27a65df40e
commit 47cddae04f

View File

@ -234,6 +234,8 @@ mod remote_coremgmt {
*guard += 1; *guard += 1;
*guard *guard
}; };
let mut buffer = Vec::new();
loop { loop {
if id != *pull_id.borrow() { if id != *pull_id.borrow() {
// another connection attempts to pull the log... // another connection attempts to pull the log...
@ -254,8 +256,12 @@ mod remote_coremgmt {
.await; .await;
match reply { match reply {
Ok(Packet::CoreMgmtGetLogReply { last: _, length, data }) => { Ok(Packet::CoreMgmtGetLogReply { last, length, data }) => {
write_chunk(stream, &data[..length as usize]).await?; buffer.extend(&data[..length as usize]);
if last {
write_chunk(stream, &buffer).await?;
buffer.clear();
}
} }
Ok(packet) => { Ok(packet) => {
error!("received unexpected aux packet: {:?}", packet); error!("received unexpected aux packet: {:?}", packet);