--- kdenetwork-3.5.7/krfb/kinetd/kinetd.h~ 2005-09-10 12:20:14 +0400 +++ kdenetwork-3.5.7/krfb/kinetd/kinetd.h 2007-09-17 15:39:19 +0400 @@ -82,7 +82,7 @@ public: QDateTime serviceLifetimeEnd(); bool isEnabled(); int port(); - QStringList processServiceTemplate(const QString &a); + QStringList processServiceTemplate(const QString &a, unsigned int num=0); bool setPort(int port = -1, int autoProbeRange = 1); void refreshRegistration(); --- kdenetwork-3.5.7/krfb/kinetd/kinetd.cpp~ 2006-10-01 21:26:23 +0400 +++ kdenetwork-3.5.7/krfb/kinetd/kinetd.cpp 2007-09-17 15:50:12 +0400 @@ -167,12 +167,12 @@ void PortListener::loadConfig(KService:: for (QStringList::iterator it=attrs.begin(); it!=attrs.end();it++) { QString key = (*it).section('=',0,0); - QString value = processServiceTemplate((*it).section('=',1))[0]; + QString value = processServiceTemplate((*it).section('=',1),1)[0]; if (!key.isEmpty()) m_dnssdData[key]=value; } } if (vdname.isValid() && vdtype.isValid()) { - m_dnssdName = processServiceTemplate(vdname.toString())[0]; + m_dnssdName = processServiceTemplate(vdname.toString(),1)[0]; m_dnssdType = vdtype.toString(); m_dnssdRegister = true; kdDebug() << "DNS-SD register is enabled\n"; @@ -246,11 +246,12 @@ int PortListener::port() { return m_port; } -QStringList PortListener::processServiceTemplate(const QString &a) { +QStringList PortListener::processServiceTemplate(const QString &a, unsigned int num) { + unsigned int n = 0; QStringList l; QValueVector v = KInetInterface::getAllInterfaces(false); QValueVector::Iterator it = v.begin(); - while (it != v.end()) { + while (it != v.end() && (num == 0 || n < num)) { KInetSocketAddress *address = (*(it++)).address(); if (!address) continue; @@ -262,6 +263,7 @@ QStringList PortListener::processService .replace(QRegExp("%u"), KServiceRegistry::encodeAttributeValue(u.loginName())) .replace(QRegExp("%i"), KServiceRegistry::encodeAttributeValue(m_uuid)) .replace(QRegExp("%f"), KServiceRegistry::encodeAttributeValue(u.fullName()))); + n++; } return l; }