tests/pkg_tinydtls_sock_async: use sock_dtls_get_event_session()

in DTLS handler
This commit is contained in:
János Brodbeck 2021-01-21 02:10:05 +01:00
parent 050b268705
commit c65b4d378b
No known key found for this signature in database
GPG Key ID: 65C193B0D8D1BCE6
3 changed files with 48 additions and 5 deletions

View File

@ -12,6 +12,7 @@ USEMODULE += gnrc_ipv6_default
USEMODULE += sock_async_event
USEMODULE += sock_dtls
USEMODULE += sock_udp
USEMODULE += sock_util
USEMODULE += event_thread_medium
USEMODULE += event_timeout

View File

@ -24,9 +24,11 @@
#include "net/sock/async/event.h"
#include "net/sock/udp.h"
#include "net/sock/dtls.h"
#include "net/sock/util.h"
#include "net/ipv6/addr.h"
#include "net/credman.h"
#include "timex.h"
#include "test_utils/expect.h"
#include "tinydtls_common.h"
#include "tinydtls_keys.h"
@ -109,6 +111,8 @@ static void _dtls_handler(sock_dtls_t *sock, sock_async_flags_t type, void *arg)
event_timeout_clear(&_timeouter);
if (type & SOCK_ASYNC_CONN_RECV) {
expect(!sock_dtls_get_event_session(sock, &session));
char *send_data = arg;
puts("Session handshake received");
if (sock_dtls_recv(sock, &session, _recv_buf, sizeof(_recv_buf),
@ -134,9 +138,21 @@ static void _dtls_handler(sock_dtls_t *sock, sock_async_flags_t type, void *arg)
_close_sock(sock);
}
if (type & SOCK_ASYNC_CONN_RDY) {
puts("Session became ready");
if (sock_dtls_get_event_session(sock, &session)) {
sock_udp_ep_t ep;
char addrstr[IPV6_ADDR_MAX_STR_LEN];
uint16_t port;
sock_dtls_session_get_udp_ep(&session, &ep);
sock_udp_ep_fmt(&ep, addrstr, &port);
printf("Session became ready: [%s]:%u\n", addrstr, port);
} else {
puts("A session became ready, but the corresponding " \
"session could not be retrieved from socket");
}
}
if (type & SOCK_ASYNC_MSG_RECV) {
expect(!sock_dtls_get_event_session(sock, &session));
int res;
if ((res = sock_dtls_recv(sock, &session, _recv_buf, sizeof(_recv_buf),

View File

@ -25,9 +25,11 @@
#include "net/sock/async/event.h"
#include "net/sock/udp.h"
#include "net/sock/dtls.h"
#include "net/sock/util.h"
#include "net/credman.h"
#include "msg.h"
#include "thread.h"
#include "test_utils/expect.h"
#include "tinydtls_common.h"
#include "tinydtls_keys.h"
@ -105,8 +107,10 @@ static void _dtls_handler(sock_dtls_t *sock, sock_async_flags_t type, void *arg)
return;
}
sock_dtls_session_t session = { 0 };
if (type & SOCK_ASYNC_CONN_RECV) {
sock_dtls_session_t session = { 0 };
expect(!sock_dtls_get_event_session(sock, &session));
puts("Session handshake received");
if (sock_dtls_recv(sock, &session, _recv_buf, sizeof(_recv_buf),
@ -117,13 +121,35 @@ static void _dtls_handler(sock_dtls_t *sock, sock_async_flags_t type, void *arg)
puts("New client connected");
}
if (type & SOCK_ASYNC_CONN_FIN) {
puts("Session was destroyed by peer");
if (sock_dtls_get_event_session(sock, &session)) {
sock_udp_ep_t ep;
char addrstr[IPV6_ADDR_MAX_STR_LEN];
uint16_t port;
sock_dtls_session_get_udp_ep(&session, &ep);
sock_udp_ep_fmt(&ep, addrstr, &port);
printf("Session was destroyed by peer: [%s]:%u\n", addrstr, port);
} else {
puts("A session was destroyed by peer, but the corresponding " \
"session could not be retrieved from socket");
}
}
if (type & SOCK_ASYNC_CONN_RDY) {
puts("Session became ready");
if (sock_dtls_get_event_session(sock, &session)) {
sock_udp_ep_t ep;
char addrstr[IPV6_ADDR_MAX_STR_LEN];
uint16_t port;
sock_dtls_session_get_udp_ep(&session, &ep);
sock_udp_ep_fmt(&ep, addrstr, &port);
printf("Session became ready: [%s]:%u\n", addrstr, port);
} else {
puts("A session became ready, but the corresponding session " \
"could not be retrieved from the socket");
}
}
if (type & SOCK_ASYNC_MSG_RECV) {
sock_dtls_session_t session = { 0 };
expect(!sock_dtls_get_event_session(sock, &session));
ssize_t res;
res = sock_dtls_recv(sock, &session, _recv_buf, sizeof(_recv_buf), 0);