updated; don't pass full_message if none
updated; udp error handling
updated; client 'message' includes level text instead of number
added; more tests