Skip to content

Commit 7f5370e

Browse files
author
Tero Heinonen
authored
Use default local address, if request is from multicast address (#46)
* Use default local address, if request is from multicast address If response to multicast request is sent, local address must be set to default. * Fix unit tests Fixed socket_listen stub.
1 parent 5d60eb8 commit 7f5370e

File tree

3 files changed

+7
-2
lines changed

3 files changed

+7
-2
lines changed

source/coap_connection_handler.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -533,6 +533,10 @@ static void secure_recv_sckt_msg(void *cb_res)
533533
memset(&src_address, 0, sizeof(ns_address_t));
534534

535535
if (sock && read_data(sckt_data, sock, &src_address, dst_address) == 0) {
536+
/* If received from multicast address, reject */
537+
if (*(dst_address) == 0xFF) {
538+
return;
539+
}
536540
secure_session_t *session = secure_session_find(sock, src_address.address, src_address.identifier);
537541

538542
// Create session

source/coap_message_handler.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#include "coap_service_api_internal.h"
88
#include "coap_message_handler.h"
99
#include "sn_coap_protocol.h"
10+
#include "socket_api.h"
1011
#include "ns_types.h"
1112
#include "ns_list.h"
1213
#include "ns_trace.h"
@@ -220,7 +221,7 @@ int16_t coap_message_handler_coap_msg_process(coap_msg_handler_t *handle, int8_t
220221
transaction_ptr->service_id = coap_service_id_find_by_socket(socket_id);
221222
transaction_ptr->msg_id = coap_message->msg_id;
222223
transaction_ptr->client_request = false;// this is server transaction
223-
memcpy(transaction_ptr->local_address, dst_addr_ptr, 16);
224+
memcpy(transaction_ptr->local_address, *(dst_addr_ptr) == 0xFF ? ns_in6addr_any : dst_addr_ptr, 16);
224225
memcpy(transaction_ptr->remote_address, source_addr_ptr, 16);
225226
transaction_ptr->remote_port = port;
226227

test/coap-service/unittest/stub/socket_api_stub.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ int8_t socket_free(int8_t socket)
3333

3434
return socket_api_stub.int8_value;
3535
}
36-
int8_t socket_listen(int8_t socket, uint8_t backlog)
36+
int8_t socket_listen(int8_t socket, ...)
3737
{
3838
if( socket_api_stub.counter >= 0){
3939
return socket_api_stub.values[socket_api_stub.counter--];

0 commit comments

Comments
 (0)