Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 20 May 2004 23:10:58 +0200
From:      Pawel Jakub Dawidek <pjd@FreeBSD.org>
To:        Andre Oppermann <andre@freebsd.org>
Cc:        freebsd-net@freebsd.org
Subject:   Re: Socket selection.
Message-ID:  <20040520211058.GX845@darkness.comp.waw.pl>
In-Reply-To: <40AD1CBA.4CB46233@freebsd.org>
References:  <20040520173012.GR845@darkness.comp.waw.pl> <40AD1CBA.4CB46233@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help

--RM4LNcG2CLff9Gl5
Content-Type: text/plain; charset=iso-8859-2
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Thu, May 20, 2004 at 11:01:46PM +0200, Andre Oppermann wrote:
+> Pawel Jakub Dawidek wrote:
+> >=20
+> > Hello.
+> >=20
+> > 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:
+> >=20
+> >         http://people.freebsd.org/~pjd/patches/in_pcb.c.2.patch
+>=20
+> No.  This is a stack variable which is unconditionally initialized to
+> NULL a few lines earlier.  Checking for variable =3D=3D NULL is always
+> going to be true and makes your 'optimization' just redundand.

But we have loop there:

	local_wild =3D NULL;
	[...]
	LIST_FOREACH(...) {
		[...]
		local_wild =3D <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:
+> >=20
+> >         http://people.freebsd.org/~pjd/patches/in_pcb.c.3.patch
+> >=20
+> > Is it ok?
+>=20
+> 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 =3D=3D b && c =3D=3D d) {
		/* do something */
	}
	/* nothing here */
}

is equivalent to:

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

isn't it?

--=20
Pawel Jakub Dawidek                       http://www.FreeBSD.org
pjd@FreeBSD.org                           http://garage.freebsd.pl
FreeBSD committer                         Am I Evil? Yes, I Am!

--RM4LNcG2CLff9Gl5
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (FreeBSD)

iD8DBQFArR7iForvXbEpPzQRAt/BAJoCHKo4w3fVXfRd8vIIhwj5V9NM/ACaApAM
dSy1/HgFoYXDGBrp9GKstUw=
=Q0QC
-----END PGP SIGNATURE-----

--RM4LNcG2CLff9Gl5--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040520211058.GX845>