fixed a race condition, cleaned up interface

there could be a condition that there are two sockets with the same fileno
in the select loop - that would be caused by deferred removal of one - non-existent as per
TCP/IP stack socket, and another newly accepted given the same fileno.

Effects could be disasterful and result in very hard to track bugs