The partial match feature in -
FindMatchingSocket(UDP_HEADER *h, NODE_INFO *remoteNode, IP_ADDR *localIP)
has caused some very unpredictable behaviour in my application. If any received UDP packet's remotePort matches any socket's SourcePort in the arp process, (and perhaps anytime, ?) immediately the IP and mac is copied to the UDP socket, thus killing the socket, unless things match.
I consider this behaviour unneeded, unwanted, getting pretty close to a bug, perhaps this could be fixed in future releases?
Something like -
partialMatch = s;