11#if DETWS_ENABLE_DTLS && DETWS_ENABLE_COAP
17static constexpr size_t COAPS_MSG_CAP = 1152;
19int coaps_process(DtlsConn *c,
const uint8_t *dgram,
size_t len, uint8_t *out,
size_t out_cap)
21 if (!dtls_conn_established(c))
22 return dtls_conn_process(c, dgram, len, out, out_cap);
27 if (len >= 1 && (dgram[0] & 0xE0) == 0x20 && (dgram[0] & 0x03) == 3)
29 uint8_t req[COAPS_MSG_CAP];
31 if (!dtls_conn_open_app(c, dgram, len, req,
sizeof(req), &req_len))
33 uint8_t resp[COAPS_MSG_CAP];
34 size_t resp_len = coap_server_process(req, req_len, resp,
sizeof(resp));
37 return (
int)dtls_conn_seal_app(c, resp, resp_len, out, out_cap);
39 return dtls_conn_process(c, dgram, len, out, out_cap);
Zero-heap CoAP server (RFC 7252): message codec + a fixed resource table.
CoAP over DTLS (CoAPs, RFC 7252 §9) - the bridge between the DTLS 1.3 server and the CoAP request han...