Paul R. Ganci
ganci@nurdog.com
Sun, 19 Feb 2006 18:57:32 -0700
Vernon Schryver wrote:
>I bet that if you make this change to the 1.3.29 version of dccd.c
>the EINVAL complaint from select() will go away:
>
>*** 1197,1203 ****
> prfds = 0;
> FD_ZERO(&wfds);
> pwfds = 0;
>! max_fd = 0;
> if (was_too_busy) {
> if (delay.tv_sec != 0
> || delay.tv_usec > DCC_USECS/4) {
>--- 1197,1203 ----
> prfds = 0;
> FD_ZERO(&wfds);
> pwfds = 0;
>! max_fd = -1;
> if (was_too_busy) {
> if (delay.tv_sec != 0
> || delay.tv_usec > DCC_USECS/4) {
>
>
This patch did not change the outcome at all. I still get the "give up
after select(): Invalid argument" error after implementing it.
>I suspect the real problem is something about how dccd is started and
>that somehow there are no open sockets for the select() loop to watch.
>It would take only seconds with gdb to (in)validate that guess. If
>initializing max_fd properly makes the select() complaint go away, then
>that guess is probably valid.
>
>
I'll try to fire up gdb another day. For now I am just going to go with
my patch since that seems to work.
> Does your system have IPv6 support?
> If so, does it have an IPv6 address?
>
>
I did turn off IPv6 support and that didn't matter either.
--
Paul (ganci@nurdog.com)