static int __dbus_check()
{
- if (NULL == g_conn_sender) {
+ if (NULL == g_conn_sender || NULL == g_conn_listener) {
SLOG(LOG_ERROR, TAG_VCD, "[ERROR] NULL connection");
return vcd_dbus_reconnect();
}
return 0;
}
+int vcd_check_dbus_connection()
+{
+ if (NULL == g_conn_sender || NULL == g_conn_listener) {
+ SLOG(LOG_ERROR, TAG_VCD, "[ERROR] NULL connection sender(%p), listener(%p)", g_conn_sender, g_conn_listener);
+ return -1;
+ }
+ return 0;
+}
+
int vcdc_send_hello(int pid, vcd_client_type_e type)
{
if (0 != __dbus_check()) {
{
/* restore signal handler */
signal(signo, SIG_DFL);
+ SLOG(LOG_ERROR, TAG_VCD, "[Server ERROR]");
- /* Send error signal for notifying that daemon is reset*/
- vcdc_send_error_signal(VCD_ERROR_SERVICE_RESET, "Daemon reset");
+ if (0 == vcd_check_dbus_connection()) {
+ /* Send error signal for notifying that daemon is reset*/
+ vcdc_send_error_signal(VCD_ERROR_SERVICE_RESET, "Daemon reset");
+ }
/* invoke signal again */
raise(signo);
signal(SIGTERM, __sig_handler);
signal(SIGINT, __sig_handler);
signal(SIGQUIT, __sig_handler);
+ signal(SIGILL, __sig_handler);
+ signal(SIGBUS, __sig_handler);
+}
+
+void vcd_unregister_signal()
+{
+ signal(SIGSEGV, SIG_IGN);
+ signal(SIGABRT, SIG_IGN);
+ signal(SIGTERM, SIG_IGN);
+ signal(SIGINT, SIG_IGN);
+ signal(SIGQUIT, SIG_IGN);
+ signal(SIGILL, SIG_IGN);
+ signal(SIGBUS, SIG_IGN);
}
int vcd_initialize()