Skip site navigation (1)Skip section navigation (2)
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>