src/coap_session.c:
src/net.c:
Wrap more code with #if !COAP_DISABLE_TCP
include/coap2/coap_tcp_internal.h:
Wrap function definitions with #if !COAP_DISABLE_TCP to force compiler
warnings if there still is reference to TCP functions and COAP_DISABLE_TCP
is set.
man/coap_attribute.txt.in:
man/coap_context.txt.in:
man/coap_encryption.txt.in:
man/coap_handler.txt.in:
man/coap_io.txt.in:
man/coap_keepalive.txt.in:
man/coap_logging.txt.in:
man/coap_observe.txt.in:
man/coap_pdu_setup.txt.in:
man/coap_recovery.txt.in:
man/coap_resource.txt.in:
man/coap_session.txt.in:
man/coap_tls_library.txt.in:
Make sure the full list is defined in the NAME section
[Gives a2x warnings that there are more than 10 entries, but this is OK]
Update where BUGS can be reported to.
man/Makefile.am:
Remove EXTRA_PAGES as all the names are now defined A2X_EXTRA_PAGES.
Commit 8faa8c28f has moved the inclusion of assert.h to
coap_internal.h. This change therefore removes the definition of
assert to avoid warnings due to multiple definitions.
As per RFC7641:
However, in the event that the state of a resource changes in
a way that would cause a normal GET request at that time to return a
non-2.xx response (for example, when the resource is deleted), the
server SHOULD notify the client by sending a notification with an
appropriate response code (such as 4.04 Not Found) and subsequently
MUST remove the associated entry from the list of observers of the
resource.
src/resource.c:
Send out a 4.04 response to all observers of a resource when deleting it.
There needs to be an easy way to validate that the examples provided in the
man pages compile without errors.
This PR provides a new executable examples-code-check that can be run against
the .txt.in files that are in the man directory. It abstracts the code for
each example and then runs the compiler against that stub code reporting errors
and warnings as appropriate for subsequent fixing in the man page.
.gitignore:
Ignore the new executable and the files it generates.
Makefile.am:
configure.ac:
Remove MAN_DIR and hard code in the man directory so that examples-code-check
is always built.
autogen.sh:
Make sure that all the temporary stub code files are cleaned up.
man/Makefile.am:
Support building and clean-up of the new examples-code-check.
man/examples-code-check.c: (new)
The code that parses the man pages, looking for examples and the gets
the examples compiled, testing for errors.
The function definitions in the SYNOPSIS section are also included in the
compilation of the examples.
scripts/build.sh:
If WITH_TESTS is set, check that the man page examples compile.
man/coap_encryption.txt.in:
man/coap_io.txt.in:
man/coap_observe.txt.in:
man/coap_pdu_setup.txt.in:
man/coap_resource.txt.in:
man/coap_session.txt.in:
Correct the SYNOPSIS function definitions.
examples/coap-server.c:
Track time spent in the epoll branch for the select() and coap_io_process()
calls to correctly adjust wait_ms.
Adjust wait_ms to be the remaining amount in the current second, so that
any 'time' observers get the updated time just after the new second starts.
include/coap2/net.h:
Add in support to track that an observe is pending transmission - primarily
a saving of needing to look up if a observe needs to be sent.
include/coap2/resource.h:
Add in support to track the context that 'owns' a resource.
src/resource.c:
Track the context that 'owns' a resource in coap_add_resource().
Track the fact that when we are making a resource partially dirty by recording
that an observe is pending in coap_notify_observers().
In the epoll case, make sure that timerfd triggers immediately when a pending
observe is set so that the application will return immediately from any select()
etc. call to process the libcoap outstanding activity (in particular pending
observes) in coap_resource_notify_observers().
Only call coap_notify_observers() in coap_check_notify if there are any
observes pending.
man/coap_observe.txt.in:
Minor clarifications in the examples.
In coap_run_once(), incoming packets are checked if they are UDP
datagrams with a destination address and port that match either
one of the existing sessions or the bind address of an endpoint.
Packets that do not match these criteria are dropped.
The layout of struct coap_address_t is platform-dependent. This
change introduces getter/setter functions to retrieve and modify
the port component:
uint16_t coap_address_get_port(const coap_address_t *addr)
void coap_address_set_port(coap_address_t *addr, uint16_t port)
The respective port is given in host byte order and will be
converted to/from network byte order automatically.
To ensure that the arenas for static memory allocation are initialized
properly, coap_memory_init() now is called directly from
coap_startup() for all platforms.
coap_malloc_type() and coap_free_type() now use static memarray_t
arenas on RIOT when module memarray is in use. Otherwise, these
functions are mapped to malloc() and free(), respectively.
A RIOT-specific version of the function coap_network_read() is
now included in the new file coap_io_riot.c. This function requires
the received gnrc_pktsnip_t structure to be passed with the
coap_socket_t structure.
The buffer szSession for storing a textual representation of the
session structure has been trimmed down to 2 * (INET6_ADDRSTRLEN + 8)
+ 24, allowing two IPv6 address references, port numbers, some
structuring text and about eight characters for the interface index.
Background: coap_print_addr() calls inet_ntop() for address output
which on RIOT is mapped to ipv6_addr_to_str(). As the length parameter
of ipv6_addr_to_str() is a uint8_t, only the lower eight bits of
szSession's size are effectively used. The previous value of 256 then
always lead no ENOSPC because 256 & 0xff == 0.
RIOT lacks support of the ancillary interface and various ioctls
therefore basic sendto() and recvfrom() are used instead.
coap_io.c: Fix mismatching #elif
This change fixes a mismatching #elif introduced during git rebase
conflict resolution.