AwaLWM2M needs to be polled regularly to check for incoming data.
Since RIOT only supports timeout at the GNRC sock layer while
the network abstraction for RIOT in AwaLWM2M uses the posix layer,
this causes RIOT to be blocked waiting for data that never arrive.
This commit implements only the SO_RCVTIMEO option in setsockopt to
allow users to set a receive timeout for a socket at the posix layer.
Signed-off-by: Francois Berder <francois.berder@imgtec.com>
Commit de41971aab sets the default
timeout to 0. This change should not have been part of the commit.
Signed-off-by: Francois Berder <francois.berder@imgtec.com>
The address is an optional parameter of recvfrom. If it is
not null, recvfrom must store the address of the sender.
However this was only allowed if res was equal to 0, which
is wrong since res contains the number of bytes received
or -1.
This commit ensures that the address is set only if no
previous errors happened before.
Signed-off-by: Francois Berder <francois.berder@imgtec.com>
The sin6_family member was an int. This caused the structure to
take 32 bytes which was greater than sockaddr_storage size (28
bytes).
Using the type sa_family_t for sin6_family member fixes this
issue.
Signed-off-by: Francois Berder <francois.berder@imgtec.com>
The return value of these functions was not always correct
in case of errors: they were not returning -1 and setting
errno.
Signed-off-by: Francois Berder <francois.berder@imgtec.com>
Missing malloc.h and clock_id_t were causing issues to build.
It was tested with this configuration:
- linux ubuntu 14.04.5
- arduino-mega2560 board
- avr-libc-1.8.0-4.1
This change was needed to build iotivity example
Bug: https://github.com/RIOT-OS/RIOT/issues/6241
Change-Id: I82ce246093b3467dfe9746f999bcc9335dbb65f6
Signed-off-by: Philippe Coval <philippe.coval@osg.samsung.com>
A client should not require to explicitly call bind() to receive packets, but is expected to receive replies sent to the ephemeral port that was selected as a source port by the UDP implementation.