-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://git.reviewboard.kde.org/r/102238/#review5696
-----------------------------------------------------------


When using your code with my simple test program

#include "hostinfo_p.h"
#include <QApplication>
#include <QHostInfo>
#include <QTime>

int main(int a, char **b)
{
        QApplication app(a, b);
        QTime t;
        t.start();
        qDebug() << KIO::HostInfo::lookupHost("www.google.com", 1).addresses();
        qDebug() << t.elapsed();
}

I get 

a.out(4386) KIO::HostInfo::lookupHost: Waiting one second for name lookup 
thread to start
a.out(4386) KIO::HostInfo::lookupHost: Waiting one second for name lookup 
thread to start
a.out(4386) KIO::HostInfo::lookupHost: Waiting one second for name lookup 
thread to start
a.out(4386) KIO::HostInfo::lookupHost: Waiting one second for name lookup 
thread to start
a.out(4386) KIO::HostInfo::lookupHost: Waiting one second for name lookup 
thread to start
a.out(4386) KIO::HostInfo::lookupHost: Failed to start name lookup thread for 
"www.google.com"
() 
55 
kDebugStream called after destruction (from virtual 
KIO::NameLookUpThread::~NameLookUpThread() file kdelibs/kio/kio/hostinfo.cpp 
line 125)
still running ? false 

The kDebugStream line looks ugly and the waiting one second for name lookup are 
wrong too since what actually has happened is that the thread already finished 
so the name lookup worked

I am also concerned about you accessing the cache from the main thread and from 
the helper thread without a lock (it could cause a crash i think)

- Albert


On Aug. 12, 2011, 3:45 a.m., Dawit Alemayehu wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://git.reviewboard.kde.org/r/102238/
> -----------------------------------------------------------
> 
> (Updated Aug. 12, 2011, 3:45 a.m.)
> 
> 
> Review request for kdelibs.
> 
> 
> Summary
> -------
> 
> The attached patch is an alternate approach to address the issue of crashes 
> that arise from terminating an active thread than the one proposed at 
> https://git.reviewboard.kde.org/r/102179/. With this patch the function 
> "QHostInfo::lookupHost(QString, int)" avoids the use of QThread::terminate 
> with the following fairly simple changes:
> 
> - Connect its finished signal to its parent deleteLater slot in the ctor so 
> that the thread is automatically deleted later.
> - Store the looked up DNS info in  the global cache to avoid unnecessary 
> queries for the same request.
> - Check for cached DNS information and avoid doing reverse look ups before 
> resorting to performing DNS queries in a separate thread.
> 
> 
> Diffs
> -----
> 
>   kio/kio/hostinfo.cpp 344b1d8 
> 
> Diff: http://git.reviewboard.kde.org/r/102238/diff
> 
> 
> Testing
> -------
> 
> Local unit testing code. Tested both failing and working DNS lookup scenarios.
> 
> 
> Thanks,
> 
> Dawit
> 
>

Reply via email to