Patchwork libnss-mdns: fix mDNS resolving speed

login
register
mail settings
Submitter Constantin Musca
Date Sept. 28, 2012, 8:18 a.m.
Message ID <1348820316-20012-1-git-send-email-constantinx.musca@intel.com>
Download mbox | patch
Permalink /patch/37425/
State New
Headers show

Comments

Constantin Musca - Sept. 28, 2012, 8:18 a.m.
We need to fix the "hosts: files dns mdns4" nsswitch.conf line
because for a .local lookup it does a DNS lookup first which will fail.
The recommended solution is:
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4

[YOCTO #2502]

Signed-off-by: Constantin Musca <constantinx.musca@intel.com>
---
 .../libnss-mdns/libnss-mdns_0.10.bb                |   13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)
Constantin Musca - Sept. 28, 2012, 8:48 a.m.
On 09/28/2012 12:40 PM, Burton, Ross wrote:
> On 28 September 2012 09:18, Constantin Musca
> <constantinx.musca@intel.com> wrote:
>> We need to fix the "hosts: files dns mdns4" nsswitch.conf line
>> because for a .local lookup it does a DNS lookup first which will fail.
>> The recommended solution is:
>> hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
> Have you tested this works?  Last time I saw this worked on
> (Christian, iirc) the "solution" wasn't actually working.
>
> Ross
I tested it pinging a host.local and it works. What else should I test ?

Constantin
Constantin Musca - Sept. 28, 2012, 8:53 a.m.
On 09/28/2012 12:46 PM, Burton, Ross wrote:
> On 28 September 2012 09:48, Constantin Musca
> <constantinx.musca@intel.com> wrote:
>>> Have you tested this works?  Last time I saw this worked on
>>> (Christian, iirc) the "solution" wasn't actually working.
>> I tested it pinging a host.local and it works. What else should I test ?
> Check that there is a speed improvement - before it would attempt a
> DNS lookup so I'd have a couple of seconds waiting before the quick
> mDNS lookup.  With the fix all .local domains should be very quick on
> the first resolution.
>
> Ross
Ok, I'll do that.

Constantin
Ross Burton - Sept. 28, 2012, 9:40 a.m.
On 28 September 2012 09:18, Constantin Musca
<constantinx.musca@intel.com> wrote:
> We need to fix the "hosts: files dns mdns4" nsswitch.conf line
> because for a .local lookup it does a DNS lookup first which will fail.
> The recommended solution is:
> hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4

Have you tested this works?  Last time I saw this worked on
(Christian, iirc) the "solution" wasn't actually working.

Ross
Ross Burton - Sept. 28, 2012, 9:46 a.m.
On 28 September 2012 09:48, Constantin Musca
<constantinx.musca@intel.com> wrote:
>> Have you tested this works?  Last time I saw this worked on
>> (Christian, iirc) the "solution" wasn't actually working.
>
> I tested it pinging a host.local and it works. What else should I test ?

Check that there is a speed improvement - before it would attempt a
DNS lookup so I'd have a couple of seconds waiting before the quick
mDNS lookup.  With the fix all .local domains should be very quick on
the first resolution.

Ross
Constantin Musca - Sept. 28, 2012, 11:55 a.m.
On 09/28/2012 12:46 PM, Burton, Ross wrote:
> On 28 September 2012 09:48, Constantin Musca
> <constantinx.musca@intel.com> wrote:
>>> Have you tested this works?  Last time I saw this worked on
>>> (Christian, iirc) the "solution" wasn't actually working.
>> I tested it pinging a host.local and it works. What else should I test ?
> Check that there is a speed improvement - before it would attempt a
> DNS lookup so I'd have a couple of seconds waiting before the quick
> mDNS lookup.  With the fix all .local domains should be very quick on
> the first resolution.
>
> Ross

Tests:

1. Without fix:
real     0m4.461s
user    0m0.034s
sys      0m0.086s

2. With fix:
real    0m0.842s
user   0m0.066s
sys     0m0.122s

As you can see, there is a speed improvement.

Cheers,
Constantin
Ross Burton - Sept. 28, 2012, 1:05 p.m.
On Friday, 28 September 2012 at 12:55, Constantin Musca wrote:
> Tests:
> 
> 1. Without fix:
> real 0m4.461s
> user 0m0.034s
> sys 0m0.086s
> 
> 2. With fix:
> real 0m0.842s
> user 0m0.066s
> sys 0m0.122s
> 
> As you can see, there is a speed improvement.
Excellent.

I'll ask it before Martin does - should we handle upgrading users from an old libnss-mdns with the old line?

Ross
Constantin Musca - Sept. 28, 2012, 2:16 p.m.
On 09/28/2012 04:05 PM, Ross Burton wrote:
> On Friday, 28 September 2012 at 12:55, Constantin Musca wrote:
>> Tests:
>>
>> 1. Without fix:
>> real 0m4.461s
>> user 0m0.034s
>> sys 0m0.086s
>>
>> 2. With fix:
>> real 0m0.842s
>> user 0m0.066s
>> sys 0m0.122s
>>
>> As you can see, there is a speed improvement.
> Excellent.
>
> I'll ask it before Martin does - should we handle upgrading users from an old libnss-mdns with the old line?
>
> Ross
>
>
I'll send patch v2 which handles upgrading.

Constantin

Patch

diff --git a/meta/recipes-connectivity/libnss-mdns/libnss-mdns_0.10.bb b/meta/recipes-connectivity/libnss-mdns/libnss-mdns_0.10.bb
index a1f2f9a..67c4710 100644
--- a/meta/recipes-connectivity/libnss-mdns/libnss-mdns_0.10.bb
+++ b/meta/recipes-connectivity/libnss-mdns/libnss-mdns_0.10.bb
@@ -7,7 +7,7 @@  LIC_FILES_CHKSUM = "file://LICENSE;md5=2d5025d4aa3495befef8f17206a5b0a1"
 
 DEPENDS = "avahi"
 RDEPENDS_${PN} = "avahi-daemon"
-PR = "r5"
+PR = "r6"
 
 SRC_URI = "http://0pointer.de/lennart/projects/nss-mdns/nss-mdns-${PV}.tar.gz"
 
@@ -24,13 +24,16 @@  DEBIANNAME_${PN} = "libnss-mdns"
 EXTRA_OECONF = "--libdir=${base_libdir} --disable-lynx --enable-avahi"
 
 pkg_postinst_${PN} () {
-if ! grep -q '^hosts:.*\<mdns4\>' $D/etc/nsswitch.conf; then
-	sed -e 's/^hosts:.*/& mdns4/' -i $D/etc/nsswitch.conf
+if ! grep -q '^hosts:.*mdns4' $D/etc/nsswitch.conf; then
+	sed -e 's/\(^hosts:.*\)\(\<files\>\)\(.*\)\(\<dns\>\)\(.*\)/\1\2 mdns4_minimal [NOTFOUND=return]\3\4 mdns4\5/' \
+		-i $D/etc/nsswitch.conf
 fi
 }
 
 pkg_prerm_${PN} () {
-if grep -q '^hosts:.*\<mdns4\>' /etc/nsswitch.conf; then
-	sed -e '/^hosts:/s/\s\<mdns4\>//' -i /etc/nsswitch.conf
+if grep -q '^hosts:.*mdns4' /etc/nsswitch.conf; then
+	sed -e '/^hosts:/s/\s*\<mdns4\>//' \
+		-e '/^hosts:/s/\s*mdns4_minimal\s\+\[NOTFOUND=return\]//' \
+		-i /etc/nsswitch.conf
 fi
 }