ctlinput now takes pointers to sockaddrs; don't close on all errors