1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
diff -Naur mythtv-master-20190105-g3382e1a-old/mythtv/libs/libmythupnp/ssdp.cpp mythtv-master-20190105-g3382e1a-new/mythtv/libs/libmythupnp/ssdp.cpp
--- mythtv-master-20190105-g3382e1a-old/mythtv/libs/libmythupnp/ssdp.cpp 2019-01-05 12:44:55.383333333 +0100
+++ mythtv-master-20190105-g3382e1a-new/mythtv/libs/libmythupnp/ssdp.cpp 2019-01-05 12:44:56.990000000 +0100
@@ -170,21 +170,21 @@
// ------------------------------------------------------------------
LOG(VB_UPNP, LOG_INFO,
- "SSDP::EnableNotifications() - sending NTS_byebye");
- m_pNotifyTask->SetNTS( NTS_byebye );
- m_pNotifyTask->Execute( nullptr );
-
- m_bAnnouncementsEnabled = true;
+ "SSDP::EnableNotifications() - sending NTS_byebye2");
+ m_pNotifyTask->SetNTS( NTS_byebye2 );
+ }
+ else
+ {
+ LOG(VB_UPNP, LOG_INFO,
+ "SSDP::EnableNotifications() - sending NTS_alive");
+ m_pNotifyTask->SetNTS( NTS_alive );
}
+ m_bAnnouncementsEnabled = true;
+
// ------------------------------------------------------------------
// Add Announcement Task to the Queue
// ------------------------------------------------------------------
-
- LOG(VB_UPNP, LOG_INFO, "SSDP::EnableNotifications() - sending NTS_alive");
-
- m_pNotifyTask->SetNTS( NTS_alive );
-
TaskQueue::Instance()->AddTask(m_pNotifyTask);
LOG(VB_UPNP, LOG_INFO,
diff -Naur mythtv-master-20190105-g3382e1a-old/mythtv/libs/libmythupnp/upnptasknotify.cpp mythtv-master-20190105-g3382e1a-new/mythtv/libs/libmythupnp/upnptasknotify.cpp
--- mythtv-master-20190105-g3382e1a-old/mythtv/libs/libmythupnp/upnptasknotify.cpp 2019-01-05 12:44:55.383333333 +0100
+++ mythtv-master-20190105-g3382e1a-new/mythtv/libs/libmythupnp/upnptasknotify.cpp 2019-01-05 12:44:56.990000000 +0100
@@ -127,7 +127,9 @@
pSocket->writeBlock( scPacket, scPacket.length(),
pSocket->address(), pSocket->port() );
- std::this_thread::sleep_for(std::chrono::milliseconds(random() % 250));
+ // Only wait if not sending final bybbye. This speeds up shutdown
+ if (m_eNTS != NTS_byebye)
+ std::this_thread::sleep_for(std::chrono::milliseconds(random() % 250));
pSocket->writeBlock( scPacket, scPacket.length(),
pSocket->address(), pSocket->port() );
}
@@ -168,6 +170,11 @@
if (m_eNTS == NTS_alive)
pQueue->AddTask( (m_nMaxAge / 2) * 1000, (Task *)this );
+ else if (m_eNTS == NTS_byebye2)
+ {
+ m_eNTS = NTS_alive;
+ pQueue->AddTask( this );
+ }
m_mutex.unlock();
diff -Naur mythtv-master-20190105-g3382e1a-old/mythtv/libs/libmythupnp/upnptasknotify.h mythtv-master-20190105-g3382e1a-new/mythtv/libs/libmythupnp/upnptasknotify.h
--- mythtv-master-20190105-g3382e1a-old/mythtv/libs/libmythupnp/upnptasknotify.h 2019-01-05 12:44:55.383333333 +0100
+++ mythtv-master-20190105-g3382e1a-new/mythtv/libs/libmythupnp/upnptasknotify.h 2019-01-05 12:44:56.990000000 +0100
@@ -38,7 +38,8 @@
typedef enum
{
NTS_alive = 0,
- NTS_byebye = 1
+ NTS_byebye = 1,
+ NTS_byebye2
} UPnpNotifyNTS;
@@ -90,6 +91,7 @@
{
case NTS_alive : return( "ssdp:alive" );
case NTS_byebye: return( "ssdp:byebye" );
+ case NTS_byebye2: return( "ssdp:byebye" );
}
return( "unknown" );
}
|