Date: Mon, 4 Nov 2002 20:25:38 -0800 (PST) From: Kelly Yancey <kbyanc@posi.net> To: Giorgos Keramidas <keramida@freebsd.org> Cc: freebsd-current@freebsd.org, <kbyanc@freebsd.org> Subject: Re: Can't resolve hosts via dns on the command line with latest -current Message-ID: <20021104201842.W51042-200000@gateway.posi.net> In-Reply-To: <20021105031705.GA573@gray.sea.gr>
index | next in thread | previous in thread | raw e-mail
[-- Attachment #1 --]
On Tue, 5 Nov 2002, Giorgos Keramidas wrote:
> On 2002-11-04 18:38, Kelly Yancey <kbyanc@posi.net> wrote:
> > Thanks for the info. Are you sure that you only reverted the one delta?
>
> Yes. I just recompiled the kernel from -rHEAD and started logging
> things while I connected to my dialup provider. Apparently lo0 does
> have the 127.0.0.1 address *and* the LOOPBACK flag but somehow fails.
>
> When (near the end of the following log) I back only this change out,
> the problems go away :/
>
Thanks for the great trace and your patience. I believe I found the root of
the problem. Could you please try the attached patch? I'm afraid that
if I hadn't gotten thown off this morning be my lo0 lacking a
127.0.0.1 address I probably would have found it much, much sooner
(it's pretty obvious in hindsight). At the very least, I also caught a
couple of pieces of code that are manipulating the socket buffer behind
sballoc() and sbfree()'s back so I've modified them to update the sb_cc
counter directly also.
Let me know if this fixes things for you. Thanks,
Kelly
--
Kelly Yancey -- kbyanc@{posi.net,FreeBSD.org}
"Democracy is a device that insures we shall be governed no better than we
deserve." -- George Bernard Shaw
[-- Attachment #2 --]
Index: kern/uipc_socket.c
===================================================================
RCS file: /home/ncvs/src/sys/kern/uipc_socket.c,v
retrieving revision 1.135
diff -u -p -r1.135 uipc_socket.c
--- kern/uipc_socket.c 2 Nov 2002 05:14:30 -0000 1.135
+++ kern/uipc_socket.c 5 Nov 2002 04:14:20 -0000
@@ -1794,7 +1794,7 @@ filt_soread(struct knote *kn, long hint)
return (1);
if (kn->kn_sfflags & NOTE_LOWAT)
return (kn->kn_data >= kn->kn_sdata);
- return (kn->kn_data >= so->so_rcv.sb_lowat);
+ return (so->so_rcv.sb_cc >= so->so_rcv.sb_lowat);
}
static void
Index: kern/uipc_socket2.c
===================================================================
RCS file: /home/ncvs/src/sys/kern/uipc_socket2.c,v
retrieving revision 1.105
diff -u -p -r1.105 uipc_socket2.c
--- kern/uipc_socket2.c 2 Nov 2002 05:14:30 -0000 1.105
+++ kern/uipc_socket2.c 5 Nov 2002 04:19:05 -0000
@@ -705,6 +705,8 @@ sbcompress(sb, m, n)
(unsigned)m->m_len);
n->m_len += m->m_len;
sb->sb_cc += m->m_len;
+ if (m->m_type != MT_DATA)
+ sb->sb_ctl += m->m_len;
m = m_free(m);
continue;
}
@@ -774,6 +776,8 @@ sbdrop(sb, len)
m->m_len -= len;
m->m_data += len;
sb->sb_cc -= len;
+ if (m->m_type != MT_DATA)
+ sb->sb_ctl -= len;
break;
}
len -= m->m_len;
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20021104201842.W51042-200000>
