Jelajahi Sumber

Change send to only send from unicast socket

Sending from the UDP broadcast socket gave sporadic strange results,
such as sending from a different IP address, than the devices address.
ListIdentity response was still correct.

Solution is to only send from the unicast port, which does not behave
strange.

Signed-off-by: Martin Melik Merkumians <melik-merkumians@acin.tuwien.ac.at>
Martin Melik Merkumians 6 tahun lalu
induk
melakukan
eac16218e9
1 mengubah file dengan 2 tambahan dan 2 penghapusan
  1. 2 2
      source/src/ports/generic_networkhandler.c

+ 2 - 2
source/src/ports/generic_networkhandler.c

@@ -499,7 +499,7 @@ void CheckAndHandleUdpGlobalBroadcastSocket(void) {
     InitializeENIPMessage(&outgoing_message);
     do {
       EipStatus need_to_send = HandleReceivedExplictUdpData(
-        g_network_status.udp_global_broadcast_listener,
+        g_network_status.udp_unicast_listener, /* sending from unicast port, due to strange behavior of the broadcast port */
         &from_address,
         receive_buffer,
         received_size,
@@ -514,7 +514,7 @@ void CheckAndHandleUdpGlobalBroadcastSocket(void) {
         OPENER_TRACE_INFO("UDP broadcast reply sent:\n");
 
         /* if the active socket matches a registered UDP callback, handle a UDP packet */
-        if (sendto( g_network_status.udp_global_broadcast_listener,
+        if (sendto( g_network_status.udp_unicast_listener, /* sending from unicast port, due to strange behavior of the broadcast port */
                     (char *) outgoing_message.message_buffer,
                     outgoing_message.used_message_length, 0,
                     (struct sockaddr *) &from_address, sizeof(from_address) )