Catch protocol errors

Right now ProtocolError's cause a crash so you don't know
where it came from. Catch instead and print the source host.