21 #include <QStringList>
29 #include "libmythbase/mythversion.h"
47 Task(
"UPnpNotifyTask")
64 if ( sUDN.length() > 0)
65 sUSN = sUDN +
"::" + sNT;
69 QString sData = QString (
"Server: %1\r\n"
73 "CACHE-CONTROL: max-age=%6\r\n"
74 "Content-Length: 0\r\n\r\n" )
81 LOG(VB_UPNP, LOG_INFO,
82 QString(
"UPnpNotifyTask::SendNotifyMsg : %1:%2 : %3 : %4")
83 .arg(pSocket->address().toString(), QString::number(pSocket->port()),
94 for (
const auto & addr : qAsConst(addressList))
96 if (addr.toString().isEmpty())
98 LOG(VB_GENERAL, LOG_ERR,
99 "UPnpNotifyTask::SendNotifyMsg - NULL in address list");
103 QHostAddress ip = addr;
107 ip.setScopeId(QString());
109 QString ipaddress = ip.toString();
112 if (ipaddress.contains(
":"))
113 ipaddress =
"[" + ipaddress +
"]";
115 QString sHeader = QString(
"NOTIFY * HTTP/1.1\r\n"
117 "LOCATION: http://%3:%4/getDeviceDesc\r\n")
118 .arg(pSocket->address().toString()) .arg(pSocket->port())
121 QString sPacket = sHeader + sData;
122 QByteArray scPacket = sPacket.toUtf8();
128 pSocket->writeBlock( scPacket, scPacket.length(),
129 pSocket->address(), pSocket->port() );
132 std::this_thread::sleep_for(std::chrono::milliseconds(
MythRandom(0, 250)));
134 pSocket->writeBlock( scPacket, scPacket.length(),
135 pSocket->address(), pSocket->port() );
169 pMulticast =
nullptr;