Fix udp handling

Make the Close() for the udp message a nop, as closing it would
close the udp listener.
Make the serve function simpler as this does not need to be in a
for-loop.
Cleanup the defer from serve()

Close the connection when returning.