All pastes #804218 Raw Edit

Miscellany

public diff v1 · immutable
·published 2007-12-03 06:37 UTC
rendered paste body
{hunk ./iris/irisnet/legacy/srvresolver.cpp 23  #include "srvresolver.h" +#include <QtAlgorithms>+ #ifndef NO_NDNS # include "ndns.h" #endifhunk ./iris/irisnet/legacy/srvresolver.cpp 31  // CS_NAMESPACE_BEGIN -static void sortSRVList(QList<Q3Dns::Server> &list)+bool serverLessThan(const Q3Dns::Server &s1, const Q3Dns::Server &s2) {hunk ./iris/irisnet/legacy/srvresolver.cpp 33-	QList<Q3Dns::Server> tmp = list;-	list.clear();+	int a = s1.priority;+	int b = s2.priority;+	int j = s1.weight;+	int k = s2.weight;+	return a < b || (a == b && j < k);+} hunk ./iris/irisnet/legacy/srvresolver.cpp 40-	while(!tmp.isEmpty()) {-		QList<Q3Dns::Server>::Iterator p = tmp.end();-		for(QList<Q3Dns::Server>::Iterator it = tmp.begin(); it != tmp.end(); ++it) {-			if(p == tmp.end())-				p = it;-			else {-				int a = (*it).priority;-				int b = (*p).priority;-				int j = (*it).weight;-				int k = (*p).weight;-				if(a < b || (a == b && j < k))-					p = it;-			}-		}-		list.append(*p);-		tmp.erase(p);-	}++static void sortSRVList(QList<Q3Dns::Server> &list)+{+	qStableSort(list.begin(), list.end(), serverLessThan); }  class SrvResolver::Privatehunk ./iris/irisnet/legacy/srvresolver.cpp 93 	delete d; } -void SrvResolver::resolve(const QString &server, const QString &type, const QString &proto)+void SrvResolver::resolve(const QString &server, const QString &type, const QString &proto, bool srvOnly) { 	stop(); hunk ./iris/irisnet/legacy/srvresolver.cpp 98 	d->failed = false;-	d->srvonly = false;+	d->srvonly = srvOnly; 	d->srv = QString("_") + type + "._" + proto + '.' + server; 	d->t.setSingleShot(true); 	d->t.start(15000);hunk ./iris/irisnet/legacy/srvresolver.cpp 107 	d->nndns.start(d->srv.toLatin1(), d->nntype); } -void SrvResolver::resolveSrvOnly(const QString &server, const QString &type, const QString &proto)+void SrvResolver::resolve(const QString &server, const QString &type, const QString &proto) {hunk ./iris/irisnet/legacy/srvresolver.cpp 109-	stop();+	resolve(server, type, proto, false);+} hunk ./iris/irisnet/legacy/srvresolver.cpp 112-	d->failed = false;-	d->srvonly = true;-	d->srv = QString("_") + type + "._" + proto + '.' + server;-	d->t.setSingleShot(true);-	d->t.start(15000);-	d->nndns_busy = true;-	d->nntype = XMPP::NameRecord::Srv;-	d->nndns.start(d->srv.toLatin1(), d->nntype);+void SrvResolver::resolveSrvOnly(const QString &server, const QString &type, const QString &proto)+{+	resolve(server, type, proto, true); }  void SrvResolver::next()hunk ./iris/irisnet/legacy/srvresolver.cpp 274 	d->servers.removeFirst();  	if(!r.isNull()) {-		d->resultAddress = d->ndns.result();+		d->resultAddress = r; 		d->resultPort = port; 		resultsReady(); 	}}