summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorZdenek Prikryl <zdeny@dhcp-lab-218.englab.brq.redhat.com>2009-04-16 15:19:21 +0200
committerZdenek Prikryl <zdeny@dhcp-lab-218.englab.brq.redhat.com>2009-04-16 15:19:21 +0200
commitd71fe39576ded4e9567f5f938e9ef67183bb8afd (patch)
treeece53e7155d3d85ce5d2e700c3cf729f42241b4c /src
parent3e7c2ab09e4bcb4b63fd80ed33c99539d3a27c5f (diff)
downloadabrt-d71fe39576ded4e9567f5f938e9ef67183bb8afd.tar.gz
abrt-d71fe39576ded4e9567f5f938e9ef67183bb8afd.tar.xz
abrt-d71fe39576ded4e9567f5f938e9ef67183bb8afd.zip
simple report can be activated immediately after a crash occurs
Diffstat (limited to 'src')
-rw-r--r--src/Daemon/CrashWatcher.cpp16
-rw-r--r--src/Daemon/Settings.cpp13
-rw-r--r--src/Daemon/Settings.h6
-rw-r--r--src/Daemon/abrt.conf8
4 files changed, 32 insertions, 11 deletions
diff --git a/src/Daemon/CrashWatcher.cpp b/src/Daemon/CrashWatcher.cpp
index b2c42ce..7c043c2 100644
--- a/src/Daemon/CrashWatcher.cpp
+++ b/src/Daemon/CrashWatcher.cpp
@@ -81,6 +81,7 @@ gboolean CCrashWatcher::handle_event_cb(GIOChannel *gio, GIOCondition condition,
{
if(cc->m_pMW->SaveDebugDump(std::string(DEBUG_DUMPS_DIR) + "/" + name, crashinfo))
{
+ cc->m_pMW->Report(std::string(DEBUG_DUMPS_DIR) + "/" + name);
/* send message to dbus */
cc->m_pCommLayer->Crash(crashinfo[CD_PACKAGE][CD_CONTENT]);
}
@@ -131,9 +132,15 @@ void CCrashWatcher::SetUpMW()
{
m_pMW->RegisterPlugin(*it_p);
}
- CSettings::map_analyzer_reporters_t reporters = m_pSettings->GetReporters();
+ CSettings::set_strings_t reporters = m_pSettings->GetReporters();
+ CSettings::set_strings_t::iterator it_r;
+ for (it_r = reporters.begin(); it_r != reporters.end(); it_r++)
+ {
+ m_pMW->AddReporter(*it_r);
+ }
+ CSettings::map_analyzer_reporters_t analyzer_reporters = m_pSettings->GetAnalyzerReporters();
CSettings::map_analyzer_reporters_t::iterator it_pr;
- for (it_pr = reporters.begin(); it_pr != reporters.end(); it_pr++)
+ for (it_pr = analyzer_reporters.begin(); it_pr != analyzer_reporters.end(); it_pr++)
{
CSettings::set_strings_t::iterator it_r;
for (it_r = it_pr->second.begin(); it_r != it_pr->second.end(); it_r++)
@@ -141,9 +148,9 @@ void CCrashWatcher::SetUpMW()
m_pMW->AddAnalyzerReporter(it_pr->first, *it_r);
}
}
- CSettings::map_analyzer_actions_t actions = m_pSettings->GetActions();
+ CSettings::map_analyzer_actions_t analyser_actions = m_pSettings->GetAnalyzerActions();
CSettings::map_analyzer_actions_t::iterator it_pa;
- for (it_pa = actions.begin(); it_pa != actions.end(); it_pa++)
+ for (it_pa = analyser_actions.begin(); it_pa != analyser_actions.end(); it_pa++)
{
CSettings::set_actions_t::iterator it_a;
for (it_a = it_pa->second.begin(); it_a != it_pa->second.end(); it_a++)
@@ -262,6 +269,7 @@ void CCrashWatcher::FindNewDumps(const std::string& pPath)
if(m_pMW->SaveDebugDump(*itt, crashinfo))
{
std::cerr << "Saved new entry: " << *itt << std::endl;
+ m_pMW->Report(*itt);
}
}
catch(std::string err)
diff --git a/src/Daemon/Settings.cpp b/src/Daemon/Settings.cpp
index 097dbc9..240a6f6 100644
--- a/src/Daemon/Settings.cpp
+++ b/src/Daemon/Settings.cpp
@@ -112,6 +112,11 @@ void CSettings::ParseCommon()
{
m_nMaxCrashReportsSize = atoi(m_mapSettingsCommon["MaxCrashReportsSize"].c_str());
}
+ if (m_mapSettingsCommon.find("Reporters") != m_mapSettingsCommon.end())
+ {
+ m_setReporters = ParseList(m_mapSettingsCommon["Reporters"]);
+ }
+
}
void CSettings::ParseReporters()
@@ -267,12 +272,12 @@ const bool& CSettings::GetOpenGPGCheck()
return m_bOpenGPGCheck;
}
-const CSettings::map_analyzer_reporters_t& CSettings::GetReporters()
+const CSettings::map_analyzer_reporters_t& CSettings::GetAnalyzerReporters()
{
return m_mapAnalyzerReporters;
}
-const CSettings::map_analyzer_actions_t& CSettings::GetActions()
+const CSettings::map_analyzer_actions_t& CSettings::GetAnalyzerActions()
{
return m_mapAnalyzerActions;
}
@@ -285,3 +290,7 @@ const std::string& CSettings::GetDatabase()
{
return m_sDatabase;
}
+const CSettings::set_strings_t& CSettings::GetReporters()
+{
+ return m_setReporters;
+}
diff --git a/src/Daemon/Settings.h b/src/Daemon/Settings.h
index 7abff7b..7a8723a 100644
--- a/src/Daemon/Settings.h
+++ b/src/Daemon/Settings.h
@@ -24,6 +24,7 @@ class CSettings
set_strings_t m_setOpenGPGPublicKeys;
set_strings_t m_setBlackList;
set_strings_t m_setEnabledPlugins;
+ set_strings_t m_setReporters;
std::string m_sDatabase;
bool m_bOpenGPGCheck;
unsigned int m_nMaxCrashReportsSize;
@@ -43,10 +44,11 @@ class CSettings
const set_strings_t& GetEnabledPlugins();
const set_strings_t& GetOpenGPGPublicKeys();
const bool& GetOpenGPGCheck();
- const map_analyzer_reporters_t& GetReporters();
- const map_analyzer_actions_t& GetActions();
+ const map_analyzer_reporters_t& GetAnalyzerReporters();
+ const map_analyzer_actions_t& GetAnalyzerActions();
const unsigned int& GetMaxCrashReportsSize();
const std::string& GetDatabase();
+ const set_strings_t& GetReporters();
};
#endif
diff --git a/src/Daemon/abrt.conf b/src/Daemon/abrt.conf
index 025dc07..51367db 100644
--- a/src/Daemon/abrt.conf
+++ b/src/Daemon/abrt.conf
@@ -9,15 +9,17 @@ OpenGPGPublicKeys = /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora
# blacklisted packages
BlackList = bash, bind, apache2
# enabled plugins
-EnabledPlugins = SQLite3, CCpp, Mailx, Kerneloops, KerneloopsReporter
+EnabledPlugins = SQLite3, CCpp, Mailx, Logger, Kerneloops, KerneloopsReporter
# selected DB plugin
Database = SQLite3
# max size for coredumps storage
MaxCrashReportsSize = 1000
+# set of reporters which are activated in crash time
+Reporters = Mailx
-# reporters association
+# reporters association with alanyzers
[ Reporters ]
-CCpp = Mailx
+CCpp = Logger
Kerneloops = KerneloopsReporter
# actions association