Skip to content

Commit 8db7082

Browse files
committed
fixup! fix(server): Don't send a copy of the PDU instead of applying the response to the original response PDU
1 parent cc0adbc commit 8db7082

File tree

7 files changed

+18
-14
lines changed

7 files changed

+18
-14
lines changed

libcoap/src/message/response.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ impl CoapResponse {
188188
/// Parses the given [CoapMessage] into a CoapResponse.
189189
///
190190
/// Returns a [MessageConversionError] if the provided PDU cannot be parsed into a response.
191-
pub fn from_message(mut pdu: CoapMessage) -> Result<CoapResponse, MessageConversionError> {
191+
pub fn from_message(pdu: CoapMessage) -> Result<CoapResponse, MessageConversionError> {
192192
let mut location_path = None;
193193
let mut location_query = None;
194194
let mut max_age = None;

libcoap/src/resource.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ use crate::{
3030
mem::{CoapFfiRcCell, DropInnerExclusively},
3131
message::{request::CoapRequest, response::CoapResponse, CoapMessage, CoapMessageCommon},
3232
protocol::{CoapMessageCode, CoapMessageType, CoapRequestCode},
33-
session::{CoapServerSession, CoapSessionCommon},
33+
session::CoapServerSession,
3434
};
3535

3636
// Trait aliases are experimental
@@ -58,7 +58,7 @@ macro_rules! resource_handler {
5858
if let Ok((mut resource, mut session, incoming_pdu, mut outgoing_pdu)) = handler_data {
5959
($f::<D>)(&mut resource, &mut session, &incoming_pdu, &mut outgoing_pdu);
6060
// TODO error handling
61-
outgoing_pdu.into_message().apply_to_raw_pdu(response_pdu, &session);
61+
let _ = outgoing_pdu.into_message().apply_to_raw_pdu(response_pdu, &session);
6262
}
6363
}
6464
unsafe { CoapRequestHandler::<$t>::from_raw_handler(_coap_method_handler_wrapper::<$t>) }

libcoap/tests/common/mod.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ use std::{
2424
use libcoap_rs::{
2525
message::{CoapMessageCommon, CoapRequest, CoapResponse},
2626
protocol::{CoapMessageCode, CoapMessageType, CoapRequestCode, CoapResponseCode},
27-
session::CoapSessionCommon,
2827
CoapContext, CoapRequestHandler, CoapResource,
2928
};
3029
use libcoap_sys::{coap_dtls_set_log_level, coap_log_t, coap_set_log_level};

libcoap/tests/dtls_psk_client_server_test.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,11 @@
1010
#![cfg(feature = "dtls-psk")]
1111
use std::time::Duration;
1212

13-
use libcoap_rs::crypto::psk::PskKey;
14-
use libcoap_rs::crypto::psk::{ClientPskContextBuilder, ServerPskContextBuilder};
15-
use libcoap_rs::session::CoapClientSession;
1613
use libcoap_rs::{
14+
crypto::psk::{ClientPskContextBuilder, PskKey, ServerPskContextBuilder},
1715
message::CoapMessageCommon,
1816
protocol::{CoapMessageCode, CoapResponseCode},
19-
session::CoapSessionCommon,
17+
session::{CoapClientSession, CoapSessionCommon},
2018
CoapContext,
2119
};
2220

@@ -28,7 +26,7 @@ pub fn dtls_psk_client_server_request() {
2826
let dummy_key = PskKey::new(Some("dtls_test_id"), "dtls_test_key___");
2927
let client_psk_context = ClientPskContextBuilder::new(dummy_key.clone()).build();
3028

31-
let server_handle = common::spawn_test_server(move |mut context| {
29+
let server_handle = common::spawn_test_server(move |mut context, _req_complete| {
3230
let server_psk_context = ServerPskContextBuilder::new(dummy_key.clone()).build();
3331
context.set_psk_context(server_psk_context).unwrap();
3432
context.add_endpoint_dtls(server_address).unwrap();
@@ -45,7 +43,9 @@ pub fn dtls_psk_client_server_request() {
4543
for response in session.poll_handle(&req_handle) {
4644
assert_eq!(response.code(), CoapMessageCode::Response(CoapResponseCode::Content));
4745
assert_eq!(response.data().unwrap().as_ref(), "Hello World!".as_bytes());
48-
server_handle.join().expect("Test server crashed with failure.");
46+
if let Err(e) = server_handle.join() {
47+
std::panic::resume_unwind(e);
48+
}
4949
return;
5050
}
5151
}

libcoap/tests/tcp_client_server_test.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@ pub fn basic_client_server_request() {
3838
for response in session.poll_handle(&req_handle) {
3939
assert_eq!(response.code(), CoapMessageCode::Response(CoapResponseCode::Content));
4040
assert_eq!(response.data().unwrap().as_ref(), "Hello World!".as_bytes());
41-
server_handle.join().unwrap();
41+
if let Err(e) = server_handle.join() {
42+
std::panic::resume_unwind(e);
43+
}
4244
return;
4345
}
4446
}

libcoap/tests/udp_client_server_test.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,9 @@ pub fn basic_client_server_request() {
3737
for response in session.poll_handle(&req_handle) {
3838
assert_eq!(response.code(), CoapMessageCode::Response(CoapResponseCode::Content));
3939
assert_eq!(response.data().unwrap().as_ref(), "Hello World!".as_bytes());
40-
server_handle.join().unwrap();
40+
if let Err(e) = server_handle.join() {
41+
std::panic::resume_unwind(e);
42+
}
4143
return;
4244
}
4345
}

libcoap/tests/udp_observe_test.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ pub fn observe_client_server_request() {
3232
context.add_endpoint_udp(server_address).unwrap();
3333

3434
let observe_resource = CoapResource::new("observe-test", (0u8, request_complete), true);
35-
let observe_resource_clone = observe_resource.clone();
3635
observe_resource.set_get_observable(true);
3736
observe_resource.set_method_handler(
3837
CoapRequestCode::Get,
@@ -81,7 +80,9 @@ pub fn observe_client_server_request() {
8180
assert_eq!(response.code(), CoapMessageCode::Response(CoapResponseCode::Content));
8281
assert_eq!(response.data().unwrap().as_ref(), [expected_request_response]);
8382
if expected_request_response != 0u8 {
84-
server_handle.join().unwrap();
83+
if let Err(e) = server_handle.join() {
84+
std::panic::resume_unwind(e);
85+
}
8586
return;
8687
}
8788
if update_request_handle.is_none() {

0 commit comments

Comments
 (0)