'unknown' is updated by coap_option_check_critical if there is a critical
option, but as it is not passed in by reference, any caller does not see
any change to 'unknown'.
Pass in 'unknown' by reference.
Issue got missed in change e2e7830
The original requesting PDU is now kept with the Observe request along with
its data and used whenever an additional response needs to be generated.
Abstracted information from the requesting PDU is no longer kept in
coap_subscription_t as it can be obtained from the kept PDU.
No longer any need to check for request PDU in request handlers as it is now
always provided.
coap_resource_notify_observers() now ignores the query parameter, as a
cache_key is now used for request matching.
As the uthash macros have been moved to coap_resource_internal.h by
PR #582 [1], see commit da18643, the convenience macros and uthash.h
inclusion can be removed from resource.h
[1] https://github.com/obgm/libcoap/pull/582
This change removes a doxygen comment starter because doxygen is
getting confused otherwise because of the immediately preceding
documentation group start.
Move coap_pdu_t to coap_pdu_internal.h.
Move internal PDU based function definitions to coap_pdu_internal.h.
Replace most references to "struct coap_pdu_t" with "coap_pdu_t".
Create new enum coap_pdu_type_t, enum coap_pdu_code_t and coap_option_num_t,
using them where appropriate for clarity of documentation.
Provide new functions to allow applications to access/update parts of
coap_pdu_t as appropriate and document as appropriate.
Update examples to use these new access functions where appropriate.
The new configuration option --disable-async now allows to switch
of support for asynchronous operations.
The new function coap_async_is_supported() can be used to check
if the library was built with async support.
Move coap_socket_t and coap_packet_t to coap_io_internal.h.
Move internal io based function definitions to coap_io_internal.h.
Replace most references to "struct coap_socket_t" with "coap_socket_t" and
references to "struct coap_packet_t" with "coap_packet_t".
Move coap_async_state_t to coap_async_internal.h and rename to coap_async_t
as it no longer has any state.
Refactor the async logic to simplify usage and provide libcoap based delay
functionality support for request/response traffic such as multicast. Let
libcoap decide when the delayed response is to be sent.
Move internal async based function definitions to coap_async_internal.h.
Replace most references to "struct coap_async_state_t" with
"coap_async_t".
Provide new functions to allow applications to access parts of
coap_async_t as appropriate.
Update examples to use these new access functions where appropriate.
Add in new man page.
Move coap_context_t and coap_queue_t to coap_net_internal.h.
Move internal context and queue based function definitions to
coap_net_internal.h.
Replace most references to "struct coap_context_t" with "coap_context_t".
Provide new functions to allow applications to access parts of coap_context_t
as appropriate and document these functions.
Update examples to use these new access functions where appropriate.
For the man documentation, move the server session setup functions to (new)
coap_endpoint_server(3) and update coap_context(3) with all the context access
functions as these are common to both the client and server.
Move coap_session_t and coap_addr_hash_t to coap_session_internal.h.
Move internal session based function definitions to coap_session_internal.h.
Replace most references to "struct coap_session_t" with "coap_session_t".
Provide new functions to allow applications to access parts of coap_session_t
as appropriate and document these functions.
Update examples to use these new access functions where appropriate.
For the man documentation, move the client session setup functions to (new)
coap_endpoint_client(3) and update coap_session(3) with all the session access
functions as these are common to both the client and server.
[coap_endpoint_server(3) will be created when coap_context_t is obfuscated.]
Add in some new .in files, but still keep original files in distribution
files.
Essentially, use coap@LIBCOAP_API_VERSION@ (or equivalent) instead of
coap2. so resultant files have the correct value.
coap_config.h.lwip.in: (new)
coap_config.h.riot.in: (new)
include/coap2/coap.h.windows.in: (new)
As per https://gcc.gnu.org/onlinedocs/cpp/Search-Path.html, many of the
coap2/ prefixes are not required for #include, so these have been removed.
Make sure that the test suite accesses the latest source version of
coap@LIBCOAP_API_VERSION@/coap.h by creating a tests/test_common.h.in that
makes the correct tests/test_common.h which is included in all of the test
suite files.
include/coap2/net.h:
src/net.c:
Update code using #587 as a base to fix potential issues.
Fixes CID 1502429
CMakeLists.txt:
cmake_coap_config.h.in:
Test for <net/if.h>
examples/coap-rd.c:
examples/coap-server.c:
man/coap-rd.txt.in:
man/coap-server.txt.in:
Add in -G option to support specifying interface to use for multicasting.
Otherwise, the interface allocated by the O/S is used depending on the
address (if any) bound to.
man/Makefile.am:
man/coap_context.txt.in:
Document the coap_join_mcast_group_intf() function.
src/coap_debug.c:
Make sure that coap_print_addr() returns a NULL terminated buffer.
This change renames `coap_join_mcast_group` to `coap_join_mcast_group_intf`
and adds an extra `const char *ifname` parameter to specify the interface
name.
A `coap_join_mcast_group` macro is defined to maintain backwards API
compatibility.
`coap_is_mcast` has been modified to recognize IPv6-mapped IPv4 multicast
addresses. Without this `coap_network_send` treats these addresses as
unicast which makes `semdmsg` fail with EINVAL.
Examples have been updated to use the new call.
The first block response is unicast, and the client requests the further blocks
using unicast. https://tools.ietf.org/html/rfc7959#section-2.8
However, the hash for the server lookup of incoming data is based on
coap_addr_tuple_t which includes the local address - which changes between
receipt of mcast and unicast requests. This causes 2 sessions to be set up,
and the subsequent request/responses are treated as individual block random
access causing mismatch of information by the client.
Fix is to hash only on the remote address (IP + port) and local port for
servers.
If the response code was set after calling coap_add_data_large_response(),
the continuing blocks were sent with code 0.00.
Now check following call to response handler that the correct code is held
within the lg_xmit information.
CoAP transaction id was formerly defined as a hash of the remote address and
message id of the CoAP PDU. It now only refers to, and is used as, the
message id.
Replace occurences of 'transaction id' with 'message id' to reflect naming in
RFC7252.
Correct the definition of coap_tid_t to what it actually represents.
Replace occurrences of coap_tid_t with coap_mid_t.
Replace uses of tid with mid
Remove unused function coap_find_transaction().
Remove the UNUSED and UNUSED_PARAM definitions and use a single definition
of COAP_UNUSED as defined in libcoap.h
Replace all UNUSED / UNUSED_PARAM usages with COAP_UNUSED.
Change some of the types of variables, and cast change sizes where known to
be safe.
There still are some C4116 warning and a couple of C4090 warning which are OK,
so disabled by a #pragma.
.github/workflows/main.yml:
Build all the cmake TLS variants.
CMakeLists.txt:
Add in missing file.
examples/tiny.c:
include/coap2/encode.h:
Move COAP_PSEUDOFP_ENCODE_8_4 functions from encode.h to tiny.c.
Fix COAP_PSEUDOFP_ENCODE_8_4_DOWN 'ls' ordering complaint.
man/examples-code-check.c:
Fix compile warning, allow 'Unused but set variables' in examples and set
-Werror when compling the examples.
examples/lwip/Makefile:
Remove compilation option -fpack-struct
Update coap_opt_filter_t to be a structure rather than a 16bit array that is
aliased with the real structure format.
Update code to use pointers where appropriate.
Result of a rebase confusion.
include/coap2/resource.h:
Remove duplicates that are also in coap_subscriber_internal.h.
libcoap-2.map:
libcoap-2.sym:
Remove the now internal only functions.