aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGravatar Szymon Tomasz Stefanek2011-01-07 18:53:32 +0000
committerGravatar Szymon Tomasz Stefanek2011-01-07 18:53:32 +0000
commitf6ddb14ca02eb62ce7629718b72122e6f05c8f89 (patch)
tree33e2b5b90ede072628df05b11b68a08790e428c3 /src
parentupdated kvirc translation (diff)
downloadKVIrc-f6ddb14ca02eb62ce7629718b72122e6f05c8f89.tar.gz
KVIrc-f6ddb14ca02eb62ce7629718b72122e6f05c8f89.tar.bz2
KVIrc-f6ddb14ca02eb62ce7629718b72122e6f05c8f89.zip
Unlike KviThread, QThread needs to be waited() for before deletion. Also a small fix in the channels join dialog.
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@5311 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src')
-rw-r--r--src/kvilib/net/KviDnsResolver.cpp25
-rw-r--r--src/modules/channelsjoin/ChannelsJoinDialog.cpp2
2 files changed, 20 insertions, 7 deletions
diff --git a/src/kvilib/net/KviDnsResolver.cpp b/src/kvilib/net/KviDnsResolver.cpp
index a8c8afa4f..8970308b1 100644
--- a/src/kvilib/net/KviDnsResolver.cpp
+++ b/src/kvilib/net/KviDnsResolver.cpp
@@ -297,12 +297,18 @@ void KviDnsResolverThread::run()
retVal = getaddrinfo(KviQString::toUtf8(m_szQuery).data(),0,&hints,&pRet);
- if(retVal != 0)dns->setError(translateDnsError(retVal));
- else {
+ if(retVal != 0)
+ {
+ dns->setError(translateDnsError(retVal));
+ } else if(!pRet)
+ {
+ dns->setError(KviError::DNSQueryFailed);
+ } else {
dns->appendHostname(pRet->ai_canonname ? QString::fromUtf8(pRet->ai_canonname) : m_szQuery);
QString szIp;
#ifdef COMPILE_IPV6_SUPPORT
- if(pRet->ai_family == PF_INET6)KviNetUtils::binaryIpToStringIp_V6(((sockaddr_in6 *)(pRet->ai_addr))->sin6_addr,szIp);
+ if(pRet->ai_family == PF_INET6)
+ KviNetUtils::binaryIpToStringIp_V6(((sockaddr_in6 *)(pRet->ai_addr))->sin6_addr,szIp);
else {
#endif
KviNetUtils::binaryIpToStringIp(((sockaddr_in *)(pRet->ai_addr))->sin_addr,szIp);
@@ -316,14 +322,16 @@ void KviDnsResolverThread::run()
{
QString tmp;
#ifdef COMPILE_IPV6_SUPPORT
- if(pNext->ai_family == PF_INET6)KviNetUtils::binaryIpToStringIp_V6(((sockaddr_in6 *)(pNext->ai_addr))->sin6_addr,tmp);
+ if(pNext->ai_family == PF_INET6)
+ KviNetUtils::binaryIpToStringIp_V6(((sockaddr_in6 *)(pNext->ai_addr))->sin6_addr,tmp);
else {
#endif
KviNetUtils::binaryIpToStringIp(((sockaddr_in *)(pNext->ai_addr))->sin_addr,tmp);
#ifdef COMPILE_IPV6_SUPPORT
}
#endif
- if(!tmp.isEmpty())dns->appendAddress(tmp);
+ if(!tmp.isEmpty())
+ dns->appendAddress(tmp);
if(pNext->ai_canonname)
{
@@ -335,7 +343,8 @@ void KviDnsResolverThread::run()
}
}
- if(pRet)freeaddrinfo(pRet);
+ if(pRet)
+ freeaddrinfo(pRet);
//#ifdef HAVE_GETNAMEINFO
}
//#endif //HAVE_GETNAMEINFO
@@ -359,7 +368,11 @@ KviDnsResolver::KviDnsResolver()
KviDnsResolver::~KviDnsResolver()
{
if(m_pSlaveThread)
+ {
+ if(!m_pSlaveThread->wait(30000))
+ qDebug("Failed to wait for the slave dns thread: we're probably going to crash!");
delete m_pSlaveThread; // will eventually terminate it (but it will also block us!!!)
+ }
//QApplication::removePostedEvents(this); // the Qt doc says that we shouldn't need this
diff --git a/src/modules/channelsjoin/ChannelsJoinDialog.cpp b/src/modules/channelsjoin/ChannelsJoinDialog.cpp
index 00d1d413b..4e9586523 100644
--- a/src/modules/channelsjoin/ChannelsJoinDialog.cpp
+++ b/src/modules/channelsjoin/ChannelsJoinDialog.cpp
@@ -70,7 +70,7 @@ ChannelsJoinDialog::ChannelsJoinDialog(QWidget * par, const char * name)
m_pTreeWidget->setRootIsDecorated(true);
m_pTreeWidget->setSelectionMode(QAbstractItemView::SingleSelection);
g->addWidget(m_pTreeWidget,0,0,1,2);
- connect(m_pTreeWidget,SIGNAL(itemDoubleClicked(QTreeWidgetItem *,int)),this,SLOT(itemDoubleClicked(QTreeWidgetItem *,int)));
+ //connect(m_pTreeWidget,SIGNAL(itemDoubleClicked(QTreeWidgetItem *,int)),this,SLOT(itemDoubleClicked(QTreeWidgetItem *,int)));
m_pGroupBox = new KviTalGroupBox(Qt::Horizontal,__tr2qs("Channel" ),this);