diff -ur psi-0.11/iris/include/xmpp.h psi-0.11-ipv6/iris/include/xmpp.h
--- psi-0.11/iris/include/xmpp.h	2007-10-27 15:17:41.000000000 +0200
+++ psi-0.11-ipv6/iris/include/xmpp.h	2007-12-30 19:56:54.000000000 +0100
@@ -30,6 +30,10 @@
 #include <qxml.h>
 #include <qdom.h>
 
+#ifdef NO_NDNS
+#include "netnames.h"
+#endif
+
 #include "xmpp_jid.h"
 #include "xmpp_stanza.h"
 #include "xmpp_stream.h"
@@ -158,6 +162,10 @@
 
 	private slots:
 		void dns_done();
+#ifdef NO_NDNS
+		void idns_resultsReady(const QList<XMPP::NameRecord> &results);
+		void idns_error(XMPP::NameResolver::Error e);
+#endif
 		void srv_done();
 		void bs_connected();
 		void bs_error(int);
diff -ur psi-0.11/iris/irisnet/jdnsshared.cpp psi-0.11-ipv6/iris/irisnet/jdnsshared.cpp
--- psi-0.11/iris/irisnet/jdnsshared.cpp	2007-10-27 15:17:41.000000000 +0200
+++ psi-0.11-ipv6/iris/irisnet/jdnsshared.cpp	2007-12-30 20:09:31.000000000 +0100
@@ -133,13 +133,13 @@
 	}
 };
 
-}
-
 inline uint qHash(const Handle &key)
 {
 	return ((uint)key.jdns) ^ key.id;
 }
 
+}
+
 //----------------------------------------------------------------------------
 // JDnsShutdown
 //----------------------------------------------------------------------------
diff -ur psi-0.11/iris/irisnet/netnames.cpp psi-0.11-ipv6/iris/irisnet/netnames.cpp
--- psi-0.11/iris/irisnet/netnames.cpp	2007-10-27 15:17:41.000000000 +0200
+++ psi-0.11-ipv6/iris/irisnet/netnames.cpp	2007-12-30 20:14:03.000000000 +0100
@@ -20,7 +20,6 @@
 
 #include "netnames.h"
 
-#include <idna.h>
 #include "irisnetplugin.h"
 #include "irisnetglobal_p.h"
 
diff -ur psi-0.11/iris/xmpp-core/connector.cpp psi-0.11-ipv6/iris/xmpp-core/connector.cpp
--- psi-0.11/iris/xmpp-core/connector.cpp	2007-10-27 15:17:41.000000000 +0200
+++ psi-0.11-ipv6/iris/xmpp-core/connector.cpp	2007-12-30 20:05:06.000000000 +0100
@@ -39,7 +39,7 @@
 #include <libidn/idna.h>
 
 #ifdef NO_NDNS
-#include <q3dns.h>
+//#include <q3dns.h>
 #else
 #include "ndns.h"
 #endif
@@ -200,7 +200,10 @@
 	int mode;
 	ByteStream *bs;
 #ifdef NO_NDNS
-	Q3Dns *qdns;
+	//Q3Dns *qdns;
+	NameResolver idns;
+	bool tmpfailed;
+	QHostAddress tmpaddr;
 #else
 	NDns dns;
 #endif
@@ -231,7 +234,9 @@
 	d = new Private;
 	d->bs = 0;
 #ifdef NO_NDNS
-	d->qdns = 0;
+	//d->qdns = 0;
+	connect(&d->idns, SIGNAL(resultsReady(const QList<XMPP::NameRecord> &)), SLOT(idns_resultsReady(const QList<XMPP::NameRecord> &)));
+	connect(&d->idns, SIGNAL(error(XMPP::NameResolver::Error)), SLOT(idns_error(XMPP::NameResolver::Error)));
 #else
 	connect(&d->dns, SIGNAL(resultsReady()), SLOT(dns_done()));
 #endif
@@ -254,12 +259,13 @@
 
 	// stop any dns
 #ifdef NO_NDNS
-	if(d->qdns) {
+	/*if(d->qdns) {
 		d->qdns->disconnect(this);
 		d->qdns->deleteLater();
 		//d->sd.deleteLater(d->qdns);
 		d->qdns = 0;
-	}
+	}*/
+	d->idns.stop();
 #else
 	if(d->dns.isBusy())
 		d->dns.stop();
@@ -411,13 +417,14 @@
 {
 #ifdef NO_NDNS
 	printf("resolving (aaaa=%d)\n", d->aaaa);
-	d->qdns = new Q3Dns;
+	/*d->qdns = new Q3Dns;
 	connect(d->qdns, SIGNAL(resultsReady()), SLOT(dns_done()));
 	if(d->aaaa)
 		d->qdns->setRecordType(Q3Dns::Aaaa); // IPv6
 	else
 		d->qdns->setRecordType(Q3Dns::A); // IPv4
-	d->qdns->setLabel(d->host);
+	d->qdns->setLabel(d->host);*/
+	d->idns.start(d->host.toLatin1(), d->aaaa ? NameRecord::Aaaa : NameRecord::A);
 #else
 	d->dns.resolve(d->host);
 #endif
@@ -429,6 +436,7 @@
 	QHostAddress addr;
 
 #ifdef NO_NDNS
+/*
 	//if(!d->qdns)
 	//	return;
 
@@ -457,6 +465,9 @@
 	}
 	else
 		addr = list.first();
+*/
+	failed = d->tmpfailed;
+	addr = d->tmpaddr;
 #else
 	if(d->dns.result().isNull ())
 		failed = true;
@@ -513,6 +524,32 @@
 	}
 }
 
+#ifdef NO_NDNS
+void AdvancedConnector::idns_resultsReady(const QList<NameRecord> &results)
+{
+	d->tmpfailed = false;
+	d->tmpaddr = QHostAddress();
+
+	if(results.isEmpty()) {
+		if(d->aaaa) {
+			d->aaaa = false;
+			do_resolve();
+			return;
+		}
+		d->tmpfailed = true;
+	}
+	else
+		d->tmpaddr = results.first().address();
+	dns_done();
+}
+
+void AdvancedConnector::idns_error(NameResolver::Error e)
+{
+	Q_UNUSED(e);
+	idns_resultsReady(QList<NameRecord>());
+}
+#endif
+
 void AdvancedConnector::do_connect()
 {
 #ifdef XMPP_DEBUG
diff -ur psi-0.11/src/src.pri psi-0.11-ipv6/src/src.pri
--- psi-0.11/src/src.pri	2007-10-27 15:17:41.000000000 +0200
+++ psi-0.11-ipv6/src/src.pri	2007-12-30 20:39:01.000000000 +0100
@@ -1,3 +1,5 @@
+CONFIG += irisnet
+
 # cutestuff
 include($$PWD/../cutestuff/cutestuff.pri)
 
diff -ur psi-0.11/src/src.pro psi-0.11-ipv6/src/src.pro
--- psi-0.11/src/src.pro	2007-10-27 15:17:41.000000000 +0200
+++ psi-0.11-ipv6/src/src.pro	2007-12-30 18:10:36.000000000 +0100
@@ -63,7 +63,7 @@
 }
 
 # IPv6 ?
-#DEFINES += NO_NDNS
+DEFINES += NO_NDNS
 
 # Psi sources
 include(src.pri)

