Skip to content

Commit 99020d7

Browse files
IntelCaisuijyao1
authored andcommitted
Let responder handlers upward propagate spdm status when error happens
1 parent dd4d707 commit 99020d7

19 files changed

+36
-62
lines changed

spdmlib/src/responder/algorithm_rsp.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,7 @@ impl ResponderContext {
2020
bytes: &[u8],
2121
writer: &'a mut Writer,
2222
) -> (SpdmResult, Option<&'a [u8]>) {
23-
let (_, rsp_slice) = self.write_spdm_algorithm(bytes, writer);
24-
(Ok(()), rsp_slice)
23+
self.write_spdm_algorithm(bytes, writer)
2524
}
2625

2726
pub fn write_spdm_algorithm<'a>(

spdmlib/src/responder/capability_rsp.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@ impl ResponderContext {
1818
bytes: &[u8],
1919
writer: &'a mut Writer,
2020
) -> (SpdmResult, Option<&'a [u8]>) {
21-
let (_, rsp_slice) = self.write_spdm_capability_response(bytes, writer);
22-
(Ok(()), rsp_slice)
21+
self.write_spdm_capability_response(bytes, writer)
2322
}
2423

2524
pub fn write_spdm_capability_response<'a>(

spdmlib/src/responder/certificate_rsp.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,7 @@ impl ResponderContext {
1919
session_id: Option<u32>,
2020
writer: &'a mut Writer,
2121
) -> (SpdmResult, Option<&'a [u8]>) {
22-
let (_, rsp_slice) = self.write_spdm_certificate_response(session_id, bytes, writer);
23-
(Ok(()), rsp_slice)
22+
self.write_spdm_certificate_response(session_id, bytes, writer)
2423
}
2524

2625
fn write_spdm_certificate_response<'a>(

spdmlib/src/responder/challenge_rsp.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,7 @@ impl ResponderContext {
2626
bytes: &[u8],
2727
writer: &'a mut Writer,
2828
) -> (SpdmResult, Option<&'a [u8]>) {
29-
let (_, rsp_slice) = self.write_spdm_challenge_response(bytes, writer);
30-
(Ok(()), rsp_slice)
29+
self.write_spdm_challenge_response(bytes, writer)
3130
}
3231

3332
pub fn write_spdm_challenge_response<'a>(

spdmlib/src/responder/context.rs

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -805,15 +805,6 @@ impl ResponderContext {
805805
self.common.chunk_context.chunk_status = common::SpdmChunkStatus::Idle;
806806
}
807807

808-
// Propagate the error upward if it is VDM defined error, otherwise remap to Ok.
809-
let result = result.or_else(|e| {
810-
if e.severity == StatusSeverity::ERROR && matches!(e.status_code, StatusCode::VDM(_)) {
811-
Err(e)
812-
} else {
813-
Ok(())
814-
}
815-
});
816-
817808
(result, rsp_slice)
818809
}
819810

@@ -1085,8 +1076,7 @@ impl ResponderContext {
10851076
self.common.chunk_context.chunk_message_data.fill(0);
10861077
}
10871078

1088-
// Error Response contained in rsp_slice, remap error to Ok(()) for dispatcher.
1089-
(Ok(()), rsp_slice)
1079+
(result, rsp_slice)
10901080
}
10911081

10921082
#[cfg(feature = "chunk-cap")]

spdmlib/src/responder/digest_rsp.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,7 @@ impl ResponderContext {
2323
session_id: Option<u32>,
2424
writer: &'a mut Writer,
2525
) -> (SpdmResult, Option<&'a [u8]>) {
26-
let (_, rsp_slice) = self.write_spdm_digest_response(session_id, bytes, writer);
27-
(Ok(()), rsp_slice)
26+
self.write_spdm_digest_response(session_id, bytes, writer)
2827
}
2928

3029
fn write_spdm_digest_response<'a>(

spdmlib/src/responder/encap_rsp.rs

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -27,18 +27,14 @@ impl ResponderContext {
2727
bytes: &[u8],
2828
writer: &'a mut Writer,
2929
) -> (SpdmResult, Option<&'a [u8]>) {
30-
if self
31-
.encap_check_version_cap_state(
32-
SpdmRequestResponseCode::SpdmRequestGetEncapsulatedRequest.get_u8(),
33-
writer,
34-
)
35-
.is_err()
36-
{
37-
(Ok(()), Some(writer.used_slice()))
38-
} else {
39-
let (_, rsp_slice) = self.write_encap_request_response(bytes, writer);
40-
(Ok(()), rsp_slice)
30+
let result = self.encap_check_version_cap_state(
31+
SpdmRequestResponseCode::SpdmRequestGetEncapsulatedRequest.get_u8(),
32+
writer,
33+
);
34+
if result.is_err() {
35+
return (result, Some(writer.used_slice()));
4136
}
37+
self.write_encap_request_response(bytes, writer)
4238
}
4339

4440
fn write_encap_request_response<'a>(

spdmlib/src/responder/end_session_rsp.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,7 @@ impl ResponderContext {
3333
stop_watchdog(session_id);
3434
}
3535

36-
let (_, rsp_slice) = self.write_spdm_end_session_response(session_id, bytes, writer);
37-
(Ok(()), rsp_slice)
36+
self.write_spdm_end_session_response(session_id, bytes, writer)
3837
}
3938

4039
pub fn write_spdm_end_session_response<'a>(

spdmlib/src/responder/error_rsp.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,7 @@ impl ResponderContext {
4040
bytes: &[u8],
4141
writer: &'a mut Writer,
4242
) -> (SpdmResult, Option<&'a [u8]>) {
43-
let (_, rsp_slice) = self.write_error_response(error_code, bytes, writer);
44-
(Ok(()), rsp_slice)
43+
self.write_error_response(error_code, bytes, writer)
4544
}
4645

4746
pub fn write_error_response<'a>(

spdmlib/src/responder/finish_rsp.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ impl ResponderContext {
3434
}
3535
}
3636

37-
(Ok(()), rsp_slice)
37+
(result, rsp_slice)
3838
}
3939

4040
// Return true on success, false otherwise.

0 commit comments

Comments
 (0)