Socket selection.

Pawel Jakub Dawidek pjd at FreeBSD.org
Thu May 20 21:11:00 GMT 2004


On Thu, May 20, 2004 at 11:01:46PM +0200, Andre Oppermann wrote:
+> Pawel Jakub Dawidek wrote:
+> > 
+> > Hello.
+> > 
+> > In in_pcblookup_hash() function, in the last loop if we find exact
+> > match, we return immediately, if it is "wild", we store a pointer and
+> > we countinue looking for exact match.
+> > I wonder if this is ok, that we change pointer every time we find a
+> > "wild" match. Is it inteded? Shouldn't it be:
+> > 
+> >         http://people.freebsd.org/~pjd/patches/in_pcb.c.2.patch
+> 
+> No.  This is a stack variable which is unconditionally initialized to
+> NULL a few lines earlier.  Checking for variable == NULL is always
+> going to be true and makes your 'optimization' just redundand.

But we have loop there:

	local_wild = NULL;
	[...]
	LIST_FOREACH(...) {
		[...]
		local_wild = <something>;
		[...]
	}

Isn't that possible that local_wild will be set few times?

+> > While I'm here, I want to improve code readability a bit:
+> > 
+> >         http://people.freebsd.org/~pjd/patches/in_pcb.c.3.patch
+> > 
+> > Is it ok?
+> 
+> No.  You change the logic of the 'if' statements to something totally
+> different.  This ain't going to work in any way.

Hmm, no:

for (...) {
	if (a == b && c == d) {
		/* do something */
	}
	/* nothing here */
}

is equivalent to:

for (...) {
	if (a != b || c != d)
		continue;
	/* do something */
}

isn't it?

-- 
Pawel Jakub Dawidek                       http://www.FreeBSD.org
pjd at FreeBSD.org                           http://garage.freebsd.pl
FreeBSD committer                         Am I Evil? Yes, I Am!
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-net/attachments/20040520/547f733d/attachment.bin


More information about the freebsd-net mailing list