CG commands: avoid logging stacktraces for user related errors, but return 404 CG ERROR instead
void log_for_thread(void* ptr, int level, const char* fmt, va_list vl)\r
{\r
win32_exception::ensure_handler_installed_for_thread("ffmpeg-thread");\r
void log_for_thread(void* ptr, int level, const char* fmt, va_list vl)\r
{\r
win32_exception::ensure_handler_installed_for_thread("ffmpeg-thread");\r
- //if (get_disable_logging_for_thread().get() == nullptr) // It does not matter what the value of the bool is\r
+ if (get_disable_logging_for_thread().get() == nullptr) // It does not matter what the value of the bool is\r
log_callback(ptr, level, fmt, vl);\r
}\r
\r
log_callback(ptr, level, fmt, vl);\r
}\r
\r
}\r
int layer = _ttoi(_parameters[1].c_str());\r
\r
}\r
int layer = _ttoi(_parameters[1].c_str());\r
\r
- GetChannel()->stage()->call(GetLayerIndex(9999), true, (boost::wformat(L"PLAY %1%") % layer).str()).wait();\r
+ try\r
+ {\r
+ GetChannel()->stage()->call(GetLayerIndex(9999), true, (boost::wformat(L"PLAY %1%") % layer).str()).wait();\r
+ }\r
+ catch (const caspar::not_supported&)\r
+ {\r
+ SetReplyString(TEXT("404 CG ERROR\r\n"));\r
+ return true;\r
+ }\r
}\r
int layer = _ttoi(_parameters[1].c_str());\r
\r
}\r
int layer = _ttoi(_parameters[1].c_str());\r
\r
- GetChannel()->stage()->call(GetLayerIndex(9999), true, (boost::wformat(L"STOP %1%") % layer).str()).wait();\r
+ try\r
+ {\r
+ GetChannel()->stage()->call(GetLayerIndex(9999), true, (boost::wformat(L"STOP %1%") % layer).str()).wait();\r
+ }\r
+ catch (const caspar::not_supported&)\r
+ {\r
+ SetReplyString(TEXT("404 CG ERROR\r\n"));\r
+ return true;\r
+ }\r
\r
int layer = _ttoi(_parameters[1].c_str());\r
\r
\r
int layer = _ttoi(_parameters[1].c_str());\r
\r
- GetChannel()->stage()->call(GetLayerIndex(9999), true, (boost::wformat(L"NEXT %1%") % layer).str()).wait();\r
+ try\r
+ {\r
+ GetChannel()->stage()->call(GetLayerIndex(9999), true, (boost::wformat(L"NEXT %1%") % layer).str()).wait();\r
+ }\r
+ catch (const caspar::not_supported&)\r
+ {\r
+ SetReplyString(TEXT("404 CG ERROR\r\n"));\r
+ return true;\r
+ }\r
}\r
\r
int layer = _ttoi(_parameters[1].c_str());\r
}\r
\r
int layer = _ttoi(_parameters[1].c_str());\r
- GetChannel()->stage()->call(GetLayerIndex(9999), true, (boost::wformat(L"REMOVE %1%") % layer).str()).wait();\r
+\r
+ try\r
+ {\r
+ GetChannel()->stage()->call(GetLayerIndex(9999), true, (boost::wformat(L"REMOVE %1%") % layer).str()).wait();\r
+ }\r
+ catch (const caspar::not_supported&)\r
+ {\r
+ SetReplyString(TEXT("404 CG ERROR\r\n"));\r
+ return true;\r
+ }\r
\r
int layer = _ttoi(_parameters.at(1).c_str());\r
\r
\r
int layer = _ttoi(_parameters.at(1).c_str());\r
\r
- GetChannel()->stage()->call(GetLayerIndex(9999), true, (boost::wformat(L"UPDATE %1% \"%2%\"") % layer % dataString).str()).wait();\r
+ try\r
+ {\r
+ GetChannel()->stage()->call(GetLayerIndex(9999), true, (boost::wformat(L"UPDATE %1% \"%2%\"") % layer % dataString).str()).wait();\r
+ }\r
+ catch (const caspar::not_supported&)\r
+ {\r
+ SetReplyString(TEXT("404 CG ERROR\r\n"));\r
+ return true;\r
+ }\r
SetReplyString(TEXT("403 CG ERROR\r\n"));\r
return false;\r
}\r
SetReplyString(TEXT("403 CG ERROR\r\n"));\r
return false;\r
}\r
int layer = _ttoi(_parameters[1].c_str());\r
\r
int layer = _ttoi(_parameters[1].c_str());\r
\r
- auto result = GetChannel()->stage()->call(GetLayerIndex(9999), true, (boost::wformat(L"INVOKE %1% \"%2%\"") % layer % _parameters.at_original(2)).str()).get();\r
- replyString << result << TEXT("\r\n"); \r
+ try\r
+ {\r
+ auto result = GetChannel()->stage()->call(GetLayerIndex(9999), true, (boost::wformat(L"INVOKE %1% \"%2%\"") % layer % _parameters.at_original(2)).str()).get();\r
+ replyString << result << TEXT("\r\n"); \r
+ }\r
+ catch (const caspar::not_supported&)\r
+ {\r
+ SetReplyString(TEXT("404 CG ERROR\r\n"));\r
+ return true;\r
+ }\r
}\r
\r
int layer = _ttoi(_parameters[1].c_str());\r
}\r
\r
int layer = _ttoi(_parameters[1].c_str());\r
- auto desc = GetChannel()->stage()->call(GetLayerIndex(9999), true, (boost::wformat(L"INFO %1%") % layer).str()).get();\r
+\r
+ try\r
+ {\r
+ auto desc = GetChannel()->stage()->call(GetLayerIndex(9999), true, (boost::wformat(L"INFO %1%") % layer).str()).get();\r
- replyString << desc << TEXT("\r\n"); \r
+ replyString << desc << TEXT("\r\n"); \r
+ }\r
+ catch (const caspar::not_supported&)\r
+ {\r
+ SetReplyString(TEXT("404 CG ERROR\r\n"));\r
+ return true;\r
+ }\r
- auto info = GetChannel()->stage()->call(GetLayerIndex(9999), true, (boost::wformat(L"INFO")).str()).get();\r
- replyString << info << TEXT("\r\n"); \r
+ try\r
+ {\r
+ auto info = GetChannel()->stage()->call(GetLayerIndex(9999), true, (boost::wformat(L"INFO")).str()).get();\r
+ replyString << info << TEXT("\r\n"); \r
+ }\r
+ catch (const caspar::not_supported&)\r
+ {\r
+ SetReplyString(TEXT("404 CG ERROR\r\n"));\r
+ return true;\r
+ }\r
} \r
\r
SetReplyString(replyString.str());\r
} \r
\r
SetReplyString(replyString.str());\r