People (other than just me) have talked about how TCP connections randomly fail and can't be established again after some interval. I'm posting to report that the problem affects UDP, as well, and the behaviour points to a bug in the underlying network code.
The problem manifests much more frequently at high data rates, but by high I don't mean hundreds a second. My fastest traffic is less than 48 messages a sec and generally less than 10.
The symptoms vary:
(Most common) UDP messages simply stop arriving. It's expected that you can lose an occasional UDP message, but when this condition happens, you never get one again, even though several a second are being sent. The only fix is a reboot.
(Rarer) parsePacket returns a bad value. All my datagrams have a payload of 1472 bytes or less. Very occasionally, parsepacket returns 1500 (hm!).
(Even more rarely) parsePacket returns a believable value, but read returns incorrect data. This might be a problem with the message length being misreported by parsePacket, or it might be the message actually got smashed, I'm not sure yet.
I'll note that my local network (this isn't internet traffic) is very reliable. Datagrams generally don't get dropped, anywhere on the network. Except by this Arduino when it flakes out, and then it loses everything.
So my questions are:
1) any known fix?
2) Is there a small factor Arduino with wifi that works reliably?
3) where is the source code for the networking layer? I'm willing to contribute time and effort to get something that works.