The XBMC package didn't depend on gnutls, therefore it would be build
before gnutls. Because of this, XBMC's ffmpeg would be built without
and TLS/SSL support and break streaming from some secure streams.
In my case, it broke HLS streaming via a HTTPS url.
when one decides to reboot/shutdown via xbmc GUI, he/she
expects it to happen immediately or with minimal delay.
there are addons (trakt, watchdog) that are known to cause high
(1+ minute) shutdown.
----
16:19:15 T:140287759476608 DEBUG: CAnnouncementManager - Announcement: OnQuit from xbmc
16:19:15 T:140287759476608 DEBUG: GOT ANNOUNCEMENT, type: 8, from xbmc, message OnQuit
16:19:15 T:140287759476608 NOTICE: Storing total System Uptime
16:19:15 T:140287759476608 NOTICE: Saving settings
16:19:15 T:140287759476608 NOTICE: stop all
^^ CJobManager::GetInstance().CancelJobs() comes in
16:19:15 T:140286952978176 DEBUG: Thread JobWorker 140286952978176 terminating (autodelete)
16:19:15 T:140286978156288 DEBUG: Thread JobWorker 140286978156288 terminating (autodelete)
16:19:15 T:140286676150016 DEBUG: Thread JobWorker 140286676150016 terminating (autodelete)
16:19:19 T:140286676150016 NOTICE: Thread FileCache start, auto delete: false
^^ so far so good but this should never happen once CApplication::Stop is called. but it does
16:19:30 T:140286676150016 ERROR: CCurlFile::FillBuffer - Failed: Timeout was reached(28)
16:19:30 T:140286676150016 NOTICE: CCurlFile::FillBuffer - Reconnect, (re)try 1
16:19:50 T:140286676150016 ERROR: CCurlFile::FillBuffer - Failed: Timeout was reached(28)
16:19:50 T:140286676150016 NOTICE: CCurlFile::FillBuffer - Reconnect, (re)try 2
16:20:10 T:140286676150016 ERROR: CCurlFile::FillBuffer - Failed: Timeout was reached(28)
16:20:10 T:140286676150016 ERROR: CCurlFile::FillBuffer - Reconnect failed!
16:20:10 T:140286676150016 INFO: CFileCache::Process - Hit eof.
16:20:10 T:140286676150016 DEBUG: Thread FileCache 140286676150016 terminating
^^ 1 minute shutdown delay..
----
with this patch now xbmc can handle SIGTERM and attempt clean exit, systemd
will take care of the rest if xbmc fails to exit.