[PATCH] DNS cache for Konqueror/KIO

Thiago Macieira thiago at kde.org
Mon Jun 23 07:35:24 BST 2008


Roland Harnau wrote:
>Hello,
>
>KIO's asynchronous design and some peculiarities in Qt's network
>department often result in concurrent  queries to resolve host names,
>especially if Konquerer launches its huge slave army. As witnessed by
>several bug reports (e.g. 162600)  some kind of router can't cope with
>this very well. The reason (at least in my case) is not the "crappy"
>handling of IPv6 queries in itself. An analysis with tcpdump reveals
>there are in general problems with concurrent queries to resolve the
>same name if the requested record (AAAA or A) does not exist. A
>solution (or workaround, as you like it) is a local DNS cache. The
>core of my patch is therefore a reimplementation of Qt's asynchronous
>resolver QHostInfo::lookupHost  in form of
>HostInfoAgent::lookupHost.with integrated cache and its integration
>into KIO. The cache lives in a central place,  in the application's
>address space,  but is used by  several slaves (instances of classes
>derived from TCPSlaveBase) living in separate process contexts. So
>some IPC is necessary, and I have simply used the socket connection
>between the slave and its counterpart in the application's address
>space.

The patch is quite ingenious, but I haven't read it all through. I'll do 
it today. I especially liked the idea of using QtConcurrent to run 
multiple parallel resolutions.

I didn't like the indention style. Please don't put function opening 
brackets on the same line as their declaration. You also have whitespace 
errors (lines ending in whitespace).

This is also a first step in fixing the long issue of not having a 
centralised slave manager. One that would allow us to say "only one FTP 
slave per host", for instance.

-- 
  Thiago Macieira  -  thiago (AT) macieira.info - thiago (AT) kde.org
    PGP/GPG: 0x6EF45358; fingerprint:
    E067 918B B660 DBD1 105C  966C 33F5 F005 6EF4 5358
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20080623/b052d0b1/attachment.sig>


More information about the kde-core-devel mailing list