diff --git a/sys/include/net/nanocoap.h b/sys/include/net/nanocoap.h index 4d9a916056..083815af59 100644 --- a/sys/include/net/nanocoap.h +++ b/sys/include/net/nanocoap.h @@ -1269,12 +1269,32 @@ static inline size_t coap_opt_put_block2_control(uint8_t *buf, uint16_t lastonum * or 0 if first option * @param[in] optnum option number to use * @param[in] string string to encode as option + * @param[in] len length of the string * @param[in] separator character used in @p string to separate parts * * @return number of bytes written to @p buf */ -size_t coap_opt_put_string(uint8_t *buf, uint16_t lastonum, uint16_t optnum, - const char *string, char separator); +size_t coap_opt_put_string_with_len(uint8_t *buf, uint16_t lastonum, uint16_t optnum, + const char *string, size_t len, char separator); +/** + * @brief Encode the given string as multi-part option into buffer + * + * @param[out] buf buffer to write to + * @param[in] lastonum number of previous option (for delta calculation), + * or 0 if first option + * @param[in] optnum option number to use + * @param[in] string string to encode as option + * @param[in] separator character used in @p string to separate parts + * + * @return number of bytes written to @p buf + */ +static inline size_t coap_opt_put_string(uint8_t *buf, uint16_t lastonum, + uint16_t optnum, + const char *string, char separator) +{ + return coap_opt_put_string_with_len(buf, lastonum, optnum, + string, strlen(string), separator); +} /** * @brief Convenience function for inserting LOCATION_PATH option into buffer diff --git a/sys/net/application_layer/nanocoap/nanocoap.c b/sys/net/application_layer/nanocoap/nanocoap.c index 8d62d987cc..bdb4a6bfd3 100644 --- a/sys/net/application_layer/nanocoap/nanocoap.c +++ b/sys/net/application_layer/nanocoap/nanocoap.c @@ -747,11 +747,9 @@ size_t coap_opt_put_block(uint8_t *buf, uint16_t lastonum, coap_block_slicer_t * return coap_opt_put_uint(buf, lastonum, option, _slicer2blkopt(slicer, more)); } -size_t coap_opt_put_string(uint8_t *buf, uint16_t lastonum, uint16_t optnum, - const char *string, char separator) +size_t coap_opt_put_string_with_len(uint8_t *buf, uint16_t lastonum, uint16_t optnum, + const char *string, size_t len, char separator) { - size_t len = strlen(string); - if (len == 0) { return 0; }