maybe there is an select problem
hi, while porting the select.c to LCR, i found the problem: the unix select function returns a set of file descriptors to be handled. the result-loop (the loop after the select()) is called again, if more than one descriptor is removed by the callback funtion. this may lead to a another call to the callback function, because the bits of the FD_SETs do not change and still set. i think we must clear these bits, if they are handled, so the handler will not be called twice in case of a "restart" of that loop. regards, andreas
Hi Andreas, sorry for the late response, I'm mostly busy with hacking phones right now ;)
the unix select function returns a set of file descriptors to be handled. the result-loop (the loop after the select()) is called again, if more than one descriptor is removed by the callback funtion. this may lead to a another call to the callback function, because the bits of the FD_SETs do not change and still set.
i think we must clear these bits, if they are handled, so the handler will not be called twice in case of a "restart" of that loop.
You are absolutely right. Thanks for spotting this! -- - Harald Welte <laforge@gnumonks.org> http://laforge.gnumonks.org/ ============================================================================ "Privacy in residential applications is a desirable marketing option." (ETSI EN 300 175-7 Ch. A6)
participants (2)
-
Andreas.Eversberg -
Harald Welte