[SCM] kodi-pvr-vdr-vnsi/master: VNSIAdmin, client: catch std::exception
tiber-guest at users.alioth.debian.org
tiber-guest at users.alioth.debian.org
Sun Feb 28 15:46:49 UTC 2016
The following commit has been merged in the master branch:
commit 411f5c4e23f924a9d1c8aa00ab3c750a06acea9a
Author: Max Kellermann <max at duempel.org>
Date: Sat Nov 7 22:54:24 2015 +0100
VNSIAdmin, client: catch std::exception
Prepare for using C++ exceptions to skip dangerous code paths early.
diff --git a/src/VNSIAdmin.cpp b/src/VNSIAdmin.cpp
index ebd44ab..ec69a8a 100644
--- a/src/VNSIAdmin.cpp
+++ b/src/VNSIAdmin.cpp
@@ -1252,13 +1252,23 @@ bool cVNSIAdmin::Dirty()
bool cVNSIAdmin::OnInitCB(GUIHANDLE cbhdl)
{
cVNSIAdmin* osd = static_cast<cVNSIAdmin*>(cbhdl);
- return osd->OnInit();
+ try {
+ return osd->OnInit();
+ } catch (std::exception e) {
+ XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what());
+ return false;
+ }
}
bool cVNSIAdmin::OnClickCB(GUIHANDLE cbhdl, int controlId)
{
cVNSIAdmin* osd = static_cast<cVNSIAdmin*>(cbhdl);
- return osd->OnClick(controlId);
+ try {
+ return osd->OnClick(controlId);
+ } catch (std::exception e) {
+ XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what());
+ return false;
+ }
}
bool cVNSIAdmin::OnFocusCB(GUIHANDLE cbhdl, int controlId)
@@ -1270,7 +1280,12 @@ bool cVNSIAdmin::OnFocusCB(GUIHANDLE cbhdl, int controlId)
bool cVNSIAdmin::OnActionCB(GUIHANDLE cbhdl, int actionId)
{
cVNSIAdmin* osd = static_cast<cVNSIAdmin*>(cbhdl);
- return osd->OnAction(actionId);
+ try {
+ return osd->OnAction(actionId);
+ } catch (std::exception e) {
+ XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what());
+ return false;
+ }
}
bool cVNSIAdmin::CreateCB(GUIHANDLE cbhdl, int x, int y, int w, int h, void *device)
diff --git a/src/VNSIChannelScan.cpp b/src/VNSIChannelScan.cpp
index 9e2e47c..07ff7b6 100644
--- a/src/VNSIChannelScan.cpp
+++ b/src/VNSIChannelScan.cpp
@@ -286,23 +286,28 @@ bool cVNSIChannelScan::OnClick(int controlId)
}
else if (controlId == BUTTON_START)
{
- if (!m_running)
- {
- m_running = true;
- m_stopped = false;
- m_Canceled = false;
- m_window->SetProperty("Scanning", "running");
- m_window->SetControlLabel(BUTTON_START, XBMC->GetLocalizedString(222));
- StartScan();
- }
- else if (!m_stopped)
- {
- m_stopped = true;
- m_Canceled = true;
- StopScan();
+ try {
+ if (!m_running)
+ {
+ m_running = true;
+ m_stopped = false;
+ m_Canceled = false;
+ m_window->SetProperty("Scanning", "running");
+ m_window->SetControlLabel(BUTTON_START, XBMC->GetLocalizedString(222));
+ StartScan();
+ }
+ else if (!m_stopped)
+ {
+ m_stopped = true;
+ m_Canceled = true;
+ StopScan();
+ }
+ else
+ ReturnFromProcessView();
+ } catch (std::exception e) {
+ XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what());
+ return false;
}
- else
- ReturnFromProcessView();
}
return true;
}
diff --git a/src/client.cpp b/src/client.cpp
index a1eca56..4063ee6 100644
--- a/src/client.cpp
+++ b/src/client.cpp
@@ -217,23 +217,30 @@ ADDON_STATUS ADDON_Create(void* hdl, void* props)
}
free(buffer);
- VNSIData = new cVNSIData;
- if (!VNSIData->Open(g_szHostname, g_iPort, NULL, g_szWolMac))
- {
- ADDON_Destroy();
- m_CurStatus = ADDON_STATUS_LOST_CONNECTION;
- return m_CurStatus;
- }
+ try {
+ VNSIData = new cVNSIData;
+ if (!VNSIData->Open(g_szHostname, g_iPort, NULL, g_szWolMac))
+ {
+ ADDON_Destroy();
+ m_CurStatus = ADDON_STATUS_LOST_CONNECTION;
+ return m_CurStatus;
+ }
- if (!VNSIData->Login())
- {
- ADDON_Destroy();
- m_CurStatus = ADDON_STATUS_LOST_CONNECTION;
- return m_CurStatus;
- }
+ if (!VNSIData->Login())
+ {
+ ADDON_Destroy();
+ m_CurStatus = ADDON_STATUS_LOST_CONNECTION;
+ return m_CurStatus;
+ }
- if (!VNSIData->EnableStatusInterface(g_bHandleMessages))
- {
+ if (!VNSIData->EnableStatusInterface(g_bHandleMessages))
+ {
+ ADDON_Destroy();
+ m_CurStatus = ADDON_STATUS_LOST_CONNECTION;
+ return m_CurStatus;
+ }
+ } catch (std::exception e) {
+ XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what());
ADDON_Destroy();
m_CurStatus = ADDON_STATUS_LOST_CONNECTION;
return m_CurStatus;
@@ -467,8 +474,13 @@ PVR_ERROR GetDriveSpace(long long *iTotal, long long *iUsed)
PVR_ERROR OpenDialogChannelScan(void)
{
cVNSIChannelScan scanner;
- scanner.Open(g_szHostname, g_iPort);
- return PVR_ERROR_NO_ERROR;
+ try {
+ scanner.Open(g_szHostname, g_iPort);
+ return PVR_ERROR_NO_ERROR;
+ } catch (std::exception e) {
+ XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what());
+ return PVR_ERROR_SERVER_ERROR;
+ }
}
/*******************************************/
@@ -479,7 +491,12 @@ PVR_ERROR GetEPGForChannel(ADDON_HANDLE handle, const PVR_CHANNEL &channel, time
if (!VNSIData)
return PVR_ERROR_SERVER_ERROR;
- return (VNSIData->GetEPGForChannel(handle, channel, iStart, iEnd) ? PVR_ERROR_NO_ERROR: PVR_ERROR_SERVER_ERROR);
+ try {
+ return (VNSIData->GetEPGForChannel(handle, channel, iStart, iEnd) ? PVR_ERROR_NO_ERROR: PVR_ERROR_SERVER_ERROR);
+ } catch (std::exception e) {
+ XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what());
+ return PVR_ERROR_SERVER_ERROR;
+ }
}
@@ -491,7 +508,12 @@ int GetChannelsAmount(void)
if (!VNSIData)
return 0;
- return VNSIData->GetChannelsCount();
+ try {
+ return VNSIData->GetChannelsCount();
+ } catch (std::exception e) {
+ XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what());
+ return 0;
+ }
}
PVR_ERROR GetChannels(ADDON_HANDLE handle, bool bRadio)
@@ -499,7 +521,12 @@ PVR_ERROR GetChannels(ADDON_HANDLE handle, bool bRadio)
if (!VNSIData)
return PVR_ERROR_SERVER_ERROR;
- return (VNSIData->GetChannelsList(handle, bRadio) ? PVR_ERROR_NO_ERROR : PVR_ERROR_SERVER_ERROR);
+ try {
+ return (VNSIData->GetChannelsList(handle, bRadio) ? PVR_ERROR_NO_ERROR : PVR_ERROR_SERVER_ERROR);
+ } catch (std::exception e) {
+ XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what());
+ return PVR_ERROR_SERVER_ERROR;
+ }
}
@@ -511,7 +538,12 @@ int GetChannelGroupsAmount()
if (!VNSIData)
return PVR_ERROR_SERVER_ERROR;
- return VNSIData->GetChannelGroupCount(g_bAutoChannelGroups);
+ try {
+ return VNSIData->GetChannelGroupCount(g_bAutoChannelGroups);
+ } catch (std::exception e) {
+ XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what());
+ return PVR_ERROR_SERVER_ERROR;
+ }
}
PVR_ERROR GetChannelGroups(ADDON_HANDLE handle, bool bRadio)
@@ -519,10 +551,15 @@ PVR_ERROR GetChannelGroups(ADDON_HANDLE handle, bool bRadio)
if (!VNSIData)
return PVR_ERROR_SERVER_ERROR;
- if(VNSIData->GetChannelGroupCount(g_bAutoChannelGroups) > 0)
- return VNSIData->GetChannelGroupList(handle, bRadio) ? PVR_ERROR_NO_ERROR : PVR_ERROR_SERVER_ERROR;
+ try {
+ if(VNSIData->GetChannelGroupCount(g_bAutoChannelGroups) > 0)
+ return VNSIData->GetChannelGroupList(handle, bRadio) ? PVR_ERROR_NO_ERROR : PVR_ERROR_SERVER_ERROR;
- return PVR_ERROR_NO_ERROR;
+ return PVR_ERROR_NO_ERROR;
+ } catch (std::exception e) {
+ XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what());
+ return PVR_ERROR_SERVER_ERROR;
+ }
}
PVR_ERROR GetChannelGroupMembers(ADDON_HANDLE handle, const PVR_CHANNEL_GROUP &group)
@@ -530,7 +567,12 @@ PVR_ERROR GetChannelGroupMembers(ADDON_HANDLE handle, const PVR_CHANNEL_GROUP &g
if (!VNSIData)
return PVR_ERROR_SERVER_ERROR;
- return VNSIData->GetChannelGroupMembers(handle, group) ? PVR_ERROR_NO_ERROR : PVR_ERROR_SERVER_ERROR;
+ try {
+ return VNSIData->GetChannelGroupMembers(handle, group) ? PVR_ERROR_NO_ERROR : PVR_ERROR_SERVER_ERROR;
+ } catch (std::exception e) {
+ XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what());
+ return PVR_ERROR_SERVER_ERROR;
+ }
}
@@ -548,7 +590,12 @@ int GetTimersAmount(void)
if (!VNSIData)
return 0;
- return VNSIData->GetTimersCount();
+ try {
+ return VNSIData->GetTimersCount();
+ } catch (std::exception e) {
+ XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what());
+ return 0;
+ }
}
PVR_ERROR GetTimers(ADDON_HANDLE handle)
@@ -556,8 +603,13 @@ PVR_ERROR GetTimers(ADDON_HANDLE handle)
if (!VNSIData)
return PVR_ERROR_SERVER_ERROR;
- /* TODO: Change implementation to get support for the timer features introduced with PVR API 1.9.7 */
- return (VNSIData->GetTimersList(handle) ? PVR_ERROR_NO_ERROR : PVR_ERROR_SERVER_ERROR);
+ try {
+ /* TODO: Change implementation to get support for the timer features introduced with PVR API 1.9.7 */
+ return (VNSIData->GetTimersList(handle) ? PVR_ERROR_NO_ERROR : PVR_ERROR_SERVER_ERROR);
+ } catch (std::exception e) {
+ XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what());
+ return PVR_ERROR_SERVER_ERROR;
+ }
}
PVR_ERROR AddTimer(const PVR_TIMER &timer)
@@ -565,7 +617,12 @@ PVR_ERROR AddTimer(const PVR_TIMER &timer)
if (!VNSIData)
return PVR_ERROR_SERVER_ERROR;
- return VNSIData->AddTimer(timer);
+ try {
+ return VNSIData->AddTimer(timer);
+ } catch (std::exception e) {
+ XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what());
+ return PVR_ERROR_SERVER_ERROR;
+ }
}
PVR_ERROR DeleteTimer(const PVR_TIMER &timer, bool bForce)
@@ -573,7 +630,12 @@ PVR_ERROR DeleteTimer(const PVR_TIMER &timer, bool bForce)
if (!VNSIData)
return PVR_ERROR_SERVER_ERROR;
- return VNSIData->DeleteTimer(timer, bForce);
+ try {
+ return VNSIData->DeleteTimer(timer, bForce);
+ } catch (std::exception e) {
+ XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what());
+ return PVR_ERROR_SERVER_ERROR;
+ }
}
PVR_ERROR UpdateTimer(const PVR_TIMER &timer)
@@ -581,7 +643,12 @@ PVR_ERROR UpdateTimer(const PVR_TIMER &timer)
if (!VNSIData)
return PVR_ERROR_SERVER_ERROR;
- return VNSIData->UpdateTimer(timer);
+ try {
+ return VNSIData->UpdateTimer(timer);
+ } catch (std::exception e) {
+ XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what());
+ return PVR_ERROR_SERVER_ERROR;
+ }
}
@@ -593,10 +660,15 @@ int GetRecordingsAmount(bool deleted)
if (!VNSIData)
return 0;
- if (!deleted)
- return VNSIData->GetRecordingsCount();
- else
- return VNSIData->GetDeletedRecordingsCount();
+ try {
+ if (!deleted)
+ return VNSIData->GetRecordingsCount();
+ else
+ return VNSIData->GetDeletedRecordingsCount();
+ } catch (std::exception e) {
+ XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what());
+ return PVR_ERROR_SERVER_ERROR;
+ }
}
PVR_ERROR GetRecordings(ADDON_HANDLE handle, bool deleted)
@@ -604,10 +676,15 @@ PVR_ERROR GetRecordings(ADDON_HANDLE handle, bool deleted)
if (!VNSIData)
return PVR_ERROR_SERVER_ERROR;
- if (!deleted)
- return VNSIData->GetRecordingsList(handle);
- else
- return VNSIData->GetDeletedRecordingsList(handle);
+ try {
+ if (!deleted)
+ return VNSIData->GetRecordingsList(handle);
+ else
+ return VNSIData->GetDeletedRecordingsList(handle);
+ } catch (std::exception e) {
+ XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what());
+ return PVR_ERROR_SERVER_ERROR;
+ }
}
PVR_ERROR RenameRecording(const PVR_RECORDING &recording)
@@ -615,7 +692,12 @@ PVR_ERROR RenameRecording(const PVR_RECORDING &recording)
if (!VNSIData)
return PVR_ERROR_SERVER_ERROR;
- return VNSIData->RenameRecording(recording, recording.strTitle);
+ try {
+ return VNSIData->RenameRecording(recording, recording.strTitle);
+ } catch (std::exception e) {
+ XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what());
+ return PVR_ERROR_SERVER_ERROR;
+ }
}
PVR_ERROR DeleteRecording(const PVR_RECORDING &recording)
@@ -623,7 +705,12 @@ PVR_ERROR DeleteRecording(const PVR_RECORDING &recording)
if (!VNSIData)
return PVR_ERROR_SERVER_ERROR;
- return VNSIData->DeleteRecording(recording);
+ try {
+ return VNSIData->DeleteRecording(recording);
+ } catch (std::exception e) {
+ XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what());
+ return PVR_ERROR_SERVER_ERROR;
+ }
}
PVR_ERROR UndeleteRecording(const PVR_RECORDING& recording)
@@ -631,7 +718,12 @@ PVR_ERROR UndeleteRecording(const PVR_RECORDING& recording)
if (!VNSIData)
return PVR_ERROR_SERVER_ERROR;
- return VNSIData->UndeleteRecording(recording);
+ try {
+ return VNSIData->UndeleteRecording(recording);
+ } catch (std::exception e) {
+ XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what());
+ return PVR_ERROR_SERVER_ERROR;
+ }
}
PVR_ERROR DeleteAllRecordingsFromTrash()
@@ -639,7 +731,12 @@ PVR_ERROR DeleteAllRecordingsFromTrash()
if (!VNSIData)
return PVR_ERROR_SERVER_ERROR;
- return VNSIData->DeleteAllRecordingsFromTrash();
+ try {
+ return VNSIData->DeleteAllRecordingsFromTrash();
+ } catch (std::exception e) {
+ XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what());
+ return PVR_ERROR_SERVER_ERROR;
+ }
}
/*******************************************/
@@ -649,8 +746,16 @@ bool OpenLiveStream(const PVR_CHANNEL &channel)
{
CloseLiveStream();
- VNSIDemuxer = new cVNSIDemux;
- return VNSIDemuxer->OpenChannel(channel);
+ try {
+ VNSIDemuxer = new cVNSIDemux;
+ return VNSIDemuxer->OpenChannel(channel);
+ } catch (std::exception e) {
+ XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what());
+ delete VNSIDemuxer;
+ VNSIDemuxer = NULL;
+ return false;
+ }
+
}
void CloseLiveStream(void)
@@ -681,7 +786,13 @@ DemuxPacket* DemuxRead(void)
if (!VNSIDemuxer)
return NULL;
- DemuxPacket *pkt = VNSIDemuxer->Read();
+ DemuxPacket *pkt;
+ try {
+ pkt = VNSIDemuxer->Read();
+ } catch (std::exception e) {
+ XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what());
+ return NULL;
+ }
TimeshiftMutex.Lock();
IsTimeshift = VNSIDemuxer->IsTimeshift();
@@ -702,8 +813,12 @@ int GetCurrentClientChannel(void)
bool SwitchChannel(const PVR_CHANNEL &channel)
{
- if (VNSIDemuxer)
- return VNSIDemuxer->SwitchChannel(channel);
+ try {
+ if (VNSIDemuxer)
+ return VNSIDemuxer->SwitchChannel(channel);
+ } catch (std::exception e) {
+ XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what());
+ }
return false;
}
@@ -713,8 +828,12 @@ PVR_ERROR SignalStatus(PVR_SIGNAL_STATUS &signalStatus)
if (!VNSIDemuxer)
return PVR_ERROR_SERVER_ERROR;
- return (VNSIDemuxer->GetSignalStatus(signalStatus) ? PVR_ERROR_NO_ERROR : PVR_ERROR_SERVER_ERROR);
-
+ try {
+ return (VNSIDemuxer->GetSignalStatus(signalStatus) ? PVR_ERROR_NO_ERROR : PVR_ERROR_SERVER_ERROR);
+ } catch (std::exception e) {
+ XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what());
+ return PVR_ERROR_SERVER_ERROR;
+ }
}
bool CanPauseStream(void)
@@ -736,8 +855,12 @@ bool CanSeekStream(void)
bool SeekTime(int time, bool backwards, double *startpts)
{
bool ret = false;
- if (VNSIDemuxer)
- ret = VNSIDemuxer->SeekTime(time, backwards, startpts);
+ try {
+ if (VNSIDemuxer)
+ ret = VNSIDemuxer->SeekTime(time, backwards, startpts);
+ } catch (std::exception e) {
+ XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what());
+ }
return ret;
}
@@ -803,7 +926,15 @@ bool OpenRecordedStream(const PVR_RECORDING &recording)
CloseRecordedStream();
VNSIRecording = new cVNSIRecording;
- return VNSIRecording->OpenRecording(recording);
+ try {
+ return VNSIRecording->OpenRecording(recording);
+ } catch (std::exception e) {
+ XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what());
+ VNSIRecording->Close();
+ delete VNSIRecording;
+ VNSIRecording = NULL;
+ return NULL;
+ }
}
void CloseRecordedStream(void)
@@ -821,13 +952,22 @@ int ReadRecordedStream(unsigned char *pBuffer, unsigned int iBufferSize)
if (!VNSIRecording)
return -1;
- return VNSIRecording->Read(pBuffer, iBufferSize);
+ try {
+ return VNSIRecording->Read(pBuffer, iBufferSize);
+ } catch (std::exception e) {
+ XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what());
+ return -1;
+ }
}
long long SeekRecordedStream(long long iPosition, int iWhence /* = SEEK_SET */)
{
- if (VNSIRecording)
- return VNSIRecording->Seek(iPosition, iWhence);
+ try {
+ if (VNSIRecording)
+ return VNSIRecording->Seek(iPosition, iWhence);
+ } catch (std::exception e) {
+ XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what());
+ }
return -1;
}
@@ -853,7 +993,12 @@ PVR_ERROR GetRecordingEdl(const PVR_RECORDING& recinfo, PVR_EDL_ENTRY edl[], int
if(!VNSIData)
return PVR_ERROR_UNKNOWN;
- return VNSIData->GetRecordingEdl(recinfo, edl, size);
+ try {
+ return VNSIData->GetRecordingEdl(recinfo, edl, size);
+ } catch (std::exception e) {
+ XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what());
+ return PVR_ERROR_SERVER_ERROR;
+ }
}
@@ -862,12 +1007,17 @@ PVR_ERROR GetRecordingEdl(const PVR_RECORDING& recinfo, PVR_EDL_ENTRY edl[], int
PVR_ERROR CallMenuHook(const PVR_MENUHOOK &menuhook, const PVR_MENUHOOK_DATA &item)
{
- if (menuhook.iHookId == 1)
- {
- cVNSIAdmin osd;
- osd.Open(g_szHostname, g_iPort);
+ try {
+ if (menuhook.iHookId == 1)
+ {
+ cVNSIAdmin osd;
+ osd.Open(g_szHostname, g_iPort);
+ }
+ return PVR_ERROR_NO_ERROR;
+ } catch (std::exception e) {
+ XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what());
+ return PVR_ERROR_SERVER_ERROR;
}
- return PVR_ERROR_NO_ERROR;
}
/** UNUSED API FUNCTIONS */
--
kodi-pvr-vdr-vnsi packaging
More information about the pkg-multimedia-commits
mailing list