Fix two bugs -
Fix two bugs -

First, treat the return from read() as an int instead of an ssize_t.
The latter is the official return type of read, but it's unsigned,
so when read() returns a -1 on error, it looks like a huge positive
number. Stupid. Whose fault is this? POSIX's?

Second, make sure we never try to read on the listen socket.

The result of these two bugs was that I was reading from the listen
socket, and it was failing and returning -1, but that looked like
a successful read.

nmc-probe/emulab-nome,nmc-probe/emulab-nome,nmc-probe/emulab-nome,nmc-probe/emulab-nome,nmc-probe/emulab-nome,nmc-probe/emulab-nome,nmc-probe/emulab-nome,nmc-probe/emulab-nome,nmc-probe/emulab-nome,nmc-probe/emulab-nome,nmc-probe/emulab-nome