> Alexey, could you comment on test for tsk->dead in unix_accept()?
> Just what is tested there? It had been added in 2.1.124 and AFAICS there
> is no way to ->dead on a passed sock to be set. Was it just-in-case test
> or should it be unix_peer(tsk)->dead? IOW, if somebody did connect()
> and then close() before we accept() should we return this (hung)
> connection on accept()?
Yes, it is crap. Apparently, I meaned unix_peer(tsk)->dead,
but, luckily, did mistake.
Why luckily? 8) Because we have to pass even dead connection request
to accept(), otherwise blocking accept() may hang after select().
I do not see any graceful solution now. I have to think.
Possible ways are:
- to purge not yet accepted conns on close of connecting socket
and to set a flag in succesful select() and to return some error
to blocking accept(), if queue contains only dead socks or empty.
- to purge not yet accepted conns on close of connecting socket,
except for the last one.
Both of them are ugly. New ideas are required.
Alexey
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/