[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