server: fix fd leak in error case