diff --git a/sys/include/net/nanocoap.h b/sys/include/net/nanocoap.h index 720e49d6a1571..de156d59279a3 100644 --- a/sys/include/net/nanocoap.h +++ b/sys/include/net/nanocoap.h @@ -232,9 +232,9 @@ extern "C" { * @{ */ /** @brief no special handling required */ -#define COAP_OPT_FINISH_NONE (0x0) +#define COAP_OPT_FINISH_NONE (0x0000) /** @brief expect a payload to follow */ -#define COAP_OPT_FINISH_PAYLOAD (0x1) +#define COAP_OPT_FINISH_PAYLOAD (0x0001) /** @} */ /** @@ -542,6 +542,7 @@ size_t coap_put_block1_ok(uint8_t *pkt_pos, coap_block1_t *block1, uint16_t last * @param[in] separator character used in @p string to separate parts * * @return number of bytes written to buffer + * @return -ENOSPC if no available options */ ssize_t coap_opt_add_string(coap_pkt_t *pkt, uint16_t optnum, const char *string, char separator); @@ -556,6 +557,7 @@ ssize_t coap_opt_add_string(coap_pkt_t *pkt, uint16_t optnum, const char *string * @param[in] value uint to encode * * @return number of bytes written to buffer + * @return <0 reserved for error but not implemented yet */ ssize_t coap_opt_add_uint(coap_pkt_t *pkt, uint16_t optnum, uint32_t value); diff --git a/sys/net/application_layer/nanocoap/nanocoap.c b/sys/net/application_layer/nanocoap/nanocoap.c index e44fd5638f3c5..d5b9c0c721877 100644 --- a/sys/net/application_layer/nanocoap/nanocoap.c +++ b/sys/net/application_layer/nanocoap/nanocoap.c @@ -651,6 +651,9 @@ ssize_t coap_opt_add_string(coap_pkt_t *pkt, uint16_t optnum, const char *string part_len = (uint8_t *)uripos - part_start; if (part_len) { + if (pkt->options_len == NANOCOAP_NOPTS_MAX) { + return -ENOSPC; + } write_len += _add_opt_pkt(pkt, optnum, part_start, part_len); } }