diff --git a/src/simplecasttcpservice.cpp b/src/simplecasttcpservice.cpp index 6ddeedc52fc6a02a3e0000beb1dad348b00d761d..d6ccc609227c0c06146dfad944ddeadc0729172a 100644 --- a/src/simplecasttcpservice.cpp +++ b/src/simplecasttcpservice.cpp @@ -79,18 +79,16 @@ signals: SimpleCastTcpService::SimpleCastTcpService(MiniMediaPlayer *player,QObject *parent) : QTcpServer(parent),player(player),manager(new QNetworkAccessManager(this)) { - connect(manager,SIGNAL(networkAccessibleChanged(QNetworkAccessManager::NetworkAccessibility)),this,SLOT(networkAccessChanged(QNetworkAccessManager::NetworkAccessibility))); + dnsService = new KDNSSD::PublicService(QString(),"_simplecast._tcp",this->serverPort(),"local"); + dnsService->setParent(this); } bool SimpleCastTcpService::listen(const QHostAddress& address, quint16 port) { bool listening = QTcpServer::listen(address,port); - - //Setup DNSSD - dnsService = new KDNSSD::PublicService(QString(),"_simplecast._tcp",this->serverPort(),"local"); - dnsService->setParent(this); + dnssdConnection = connect(manager,SIGNAL(networkAccessibleChanged(QNetworkAccessManager::NetworkAccessibility)),this,SLOT(networkAccessChanged(QNetworkAccessManager::NetworkAccessibility))); //Start publishing now and if not, wait for networkAccessibleManager to let us know. - if(manager->networkAccessible() == QNetworkAccessManager::Accessible && !dnsService->isPublished()) + if(manager->networkAccessible() == QNetworkAccessManager::Accessible) { dnsService->publishAsync(); } @@ -103,12 +101,17 @@ void SimpleCastTcpService::networkAccessChanged(QNetworkAccessManager::NetworkAc { dnsService->publishAsync(); } + else + { + dnsService->stop(); + } } void SimpleCastTcpService::close() { QTcpServer::close(); + disconnect(dnssdConnection); dnsService->stop(); } diff --git a/src/simplecasttcpservice.h b/src/simplecasttcpservice.h index 243444261afb2a7887b6a21083661e6823fdf45a..dc385f418edda753866cd6069ae7ab7b61f1dc8f 100644 --- a/src/simplecasttcpservice.h +++ b/src/simplecasttcpservice.h @@ -45,6 +45,7 @@ private: MiniMediaPlayer *player; KDNSSD::PublicService *dnsService; QNetworkAccessManager *manager; + QMetaObject::Connection dnssdConnection; };