1
0
mirror of https://github.com/VDR4Arch/vdr.git synced 2023-10-10 13:36:52 +02:00

Fixed a possible crash in case the SVDRP connection to a peer VDR is terminated while getting remote timers

This commit is contained in:
Klaus Schmidinger 2017-05-31 14:06:07 +02:00
parent f97a59597f
commit bae02358a3
2 changed files with 7 additions and 3 deletions

View File

@ -9056,7 +9056,7 @@ Video Disk Recorder Revision History
- Fixed detecting the inclusion of STL header files in tools.h (thanks to Jasmin - Fixed detecting the inclusion of STL header files in tools.h (thanks to Jasmin
Jessich). Jessich).
2017-05-30: Version 2.3.6 2017-05-31: Version 2.3.6
- Added debug output for checking the correct sequence of locking global lists - Added debug output for checking the correct sequence of locking global lists
(with help and suggestions from Jasmin Jessich). To activate this, define the (with help and suggestions from Jasmin Jessich). To activate this, define the
@ -9087,3 +9087,5 @@ Video Disk Recorder Revision History
- Now using a separate mutex to fix the race between SVDRP CHAN and - Now using a separate mutex to fix the race between SVDRP CHAN and
cDevice::HasProgramme(), because the previous fix caused a deadlock (reported by cDevice::HasProgramme(), because the previous fix caused a deadlock (reported by
Derek Kelly). Derek Kelly).
- Fixed a possible crash in case the SVDRP connection to a peer VDR is terminated
while getting remote timers.

View File

@ -10,7 +10,7 @@
* and interact with the Video Disk Recorder - or write a full featured * and interact with the Video Disk Recorder - or write a full featured
* graphical interface that sits on top of an SVDRP connection. * graphical interface that sits on top of an SVDRP connection.
* *
* $Id: svdrp.c 4.19 2017/05/28 13:05:23 kls Exp $ * $Id: svdrp.c 4.20 2017/05/31 14:02:17 kls Exp $
*/ */
#include "svdrp.h" #include "svdrp.h"
@ -385,6 +385,7 @@ void cSVDRPClient::Close(void)
file.Close(); file.Close();
socket.Close(); socket.Close();
LOCK_TIMERS_WRITE; LOCK_TIMERS_WRITE;
if (Timers)
Timers->DelRemoteTimers(serverName); Timers->DelRemoteTimers(serverName);
} }
} }
@ -463,6 +464,7 @@ bool cSVDRPClient::Process(cStringList *Response)
else if (r <= 0) { else if (r <= 0) {
isyslog("SVDRP < %s lost connection to remote server '%s'", ipAddress.Connection(), *serverName); isyslog("SVDRP < %s lost connection to remote server '%s'", ipAddress.Connection(), *serverName);
Close(); Close();
return false;
} }
} }
else if (!Response) else if (!Response)