Select only works on fds < 1024 so you will potentially return false here for sockets that are not in error state. Another issue is sockets that have accidentally been returned to the pool before the last response was completely processed (improperly handled socket timeouts are the common cause). The select call will succeed, but for a response to a different request.