Bah. I had a long day. It will still block because accept() returns a new socket descriptor. I think I know how to fix that. we just need to FDSET() on the reading side and when it fires we read from it and use code from serve connection to check when we are done or not and then close the socket. G.F.