Fixes Issue #157 (Router segfaults) (#159)

Found a number of problems with the router when compiling on linux

* Expected malloc()'ed memory to be zeroed resulting in segfault
* IPC_NOWAIT in iplayer loop means incoming traffic will be delayed until outgoing traffic is received.
* When configured with two BIP interfaces, broadcast loops ensue because the broacast traffic is not correctly filtered.  I think the safest thing to do here is to use the SO_BINDTODEVICE setsockopt.
This commit is contained in:
Stephen Dawson-Haggerty
2021-03-11 15:54:11 -05:00
committed by GitHub
parent 038ba9ec2b
commit adf66f412d
6 changed files with 30 additions and 19 deletions
+2 -1
View File
@@ -29,6 +29,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/ipc.h>
#include "mstpmodule.h"
#include "bacnet/bacint.h"
#include "dlmstp_linux.h"
@@ -106,7 +107,7 @@ void *dl_mstp_thread(void *pArgs)
BACMSG msg_storage, *bacmsg;
MSG_DATA *msg_data;
bacmsg = recv_from_msgbox(port->port_id, &msg_storage);
bacmsg = recv_from_msgbox(port->port_id, &msg_storage, IPC_NOWAIT);
if (bacmsg) {
switch (bacmsg->type) {