apr-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mladen Turk <mt...@apache.org>
Subject Solaris pollset_add weirdness
Date Mon, 18 Jul 2011 12:23:28 GMT

Anyone can explain the purpose of add_ring in Solaris
port.c and its usage during pollset_add/pollset_wait

Current behavior is different from other implementations
in such way that adding faulty sockets (e.g. shutdown)
to the pollset behaves randomly depending on the state at
which currently the pollset is.

a.) If the pollset is currently in the pollset_poll
     state adding fault socket will fail.
b.) If the pollset is NOT in the poll call, the socket
     is added to the add_ring and OK is returned !?
     Next call to poll calls port_associate for that socket
     and if one fails, all other in the queue are skipped.
     Fault cause pollset_add returned OK for all of them!
     Also the return error is for poll_add not for poll.

Any technical reason why we can't call port_associate
always during pollset_add instead just if its executing
port_getn? I mean I would expect at least otherwise, but
it seems port_getn and port_associate can be called
concurrently, so cannot get the need for an additional


View raw message