diff options
author | Klaus Schmidinger <vdr@tvdr.de> | 2017-05-31 14:06:07 +0200 |
---|---|---|
committer | Klaus Schmidinger <vdr@tvdr.de> | 2017-05-31 14:06:07 +0200 |
commit | bae02358a3a0f697bb10fe67bfc6ea183e36679b (patch) | |
tree | f64b2d2a77b18fa729421576bc0a39b667f1e2ee | |
parent | f97a59597f53e2a207b624ab32f491131253987c (diff) | |
download | vdr-bae02358a3a0f697bb10fe67bfc6ea183e36679b.tar.gz vdr-bae02358a3a0f697bb10fe67bfc6ea183e36679b.tar.bz2 |
Fixed a possible crash in case the SVDRP connection to a peer VDR is terminated while getting remote timers
-rw-r--r-- | HISTORY | 4 | ||||
-rw-r--r-- | svdrp.c | 6 |
2 files changed, 7 insertions, 3 deletions
@@ -9056,7 +9056,7 @@ Video Disk Recorder Revision History - Fixed detecting the inclusion of STL header files in tools.h (thanks to Jasmin 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 (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 cDevice::HasProgramme(), because the previous fix caused a deadlock (reported by Derek Kelly). +- Fixed a possible crash in case the SVDRP connection to a peer VDR is terminated + while getting remote timers. @@ -10,7 +10,7 @@ * and interact with the Video Disk Recorder - or write a full featured * 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" @@ -385,7 +385,8 @@ void cSVDRPClient::Close(void) file.Close(); socket.Close(); LOCK_TIMERS_WRITE; - Timers->DelRemoteTimers(serverName); + if (Timers) + Timers->DelRemoteTimers(serverName); } } @@ -463,6 +464,7 @@ bool cSVDRPClient::Process(cStringList *Response) else if (r <= 0) { isyslog("SVDRP < %s lost connection to remote server '%s'", ipAddress.Connection(), *serverName); Close(); + return false; } } else if (!Response) |