diff options
| author | Karel Klic <kklic@redhat.com> | 2009-12-07 12:28:16 +0100 |
|---|---|---|
| committer | Karel Klic <kklic@redhat.com> | 2009-12-07 12:28:16 +0100 |
| commit | 9c20953d95a20d031896245f98a62f1e89d29c33 (patch) | |
| tree | 3f808a5be51cbe59e8c5947aeef743575c8cb6e4 /src/Daemon/MiddleWare.cpp | |
| parent | c7341fd8519a89af558b341f316931d851a747fc (diff) | |
| parent | fb72ac689ca4832fca215edc942ae01592ecfff8 (diff) | |
| download | abrt-9c20953d95a20d031896245f98a62f1e89d29c33.tar.gz abrt-9c20953d95a20d031896245f98a62f1e89d29c33.tar.xz abrt-9c20953d95a20d031896245f98a62f1e89d29c33.zip | |
Merge branch 'master' of ssh://git.fedorahosted.org/git/abrt
Diffstat (limited to 'src/Daemon/MiddleWare.cpp')
| -rw-r--r-- | src/Daemon/MiddleWare.cpp | 71 |
1 files changed, 30 insertions, 41 deletions
diff --git a/src/Daemon/MiddleWare.cpp b/src/Daemon/MiddleWare.cpp index 94e27ae..e775764 100644 --- a/src/Daemon/MiddleWare.cpp +++ b/src/Daemon/MiddleWare.cpp @@ -247,7 +247,7 @@ mw_result_t CreateCrashReport(const char *pUUID, { CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase.c_str()); database->Connect(); - row = database->GetUUIDData(pUUID, pUID); + row = database->GetRow(pUUID, pUID); database->DisConnect(); } if (pUUID[0] == '\0' || row.m_sUUID != pUUID) @@ -348,7 +348,7 @@ void RunActionsAndReporters(const char *pDebugDumpDir) map_crash_report_t crashReport; DebugDumpToCrashReport(pDebugDumpDir, crashReport); VERB2 log("%s.Report(...)", it_ar->first.c_str()); - reporter->Report(crashReport, plugin_settings, it_ar->second); + reporter->Report(crashReport, plugin_settings, it_ar->second.c_str()); } else if (tp == ACTION) { @@ -490,7 +490,7 @@ report_status_t Report(const map_crash_report_t& pCrashReport, } #endif map_plugin_settings_t plugin_settings = pSettings[pluginName]; - std::string res = reporter->Report(pCrashReport, plugin_settings, it_r->second); + std::string res = reporter->Report(pCrashReport, plugin_settings, it_r->second.c_str()); #if 0 /* Using ~user/.abrt/ is bad wrt security */ if (home != "") @@ -514,24 +514,12 @@ report_status_t Report(const map_crash_report_t& pCrashReport, CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase.c_str()); database->Connect(); - database->SetReported(UUID, UID, message); + database->SetReported(UUID.c_str(), UID.c_str(), message.c_str()); database->DisConnect(); return ret; } -std::string DeleteCrashInfo(const char *pUUID, - const char *pUID) -{ - CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase.c_str()); - database->Connect(); - database_row_t row = database->GetUUIDData(pUUID, pUID); - database->Delete(pUUID, pUID); - database->DisConnect(); - - return row.m_sDebugDumpDir; -} - /** * Check whether particular debugdump directory is saved * in database. This check is done together with an UID of an user. @@ -700,7 +688,7 @@ void autoreport(const pair_string_string_t& reporter_options, const map_crash_re } map_plugin_settings_t plugin_settings; - std::string res = reporter->Report(crash_report, plugin_settings, reporter_options.second); + std::string res = reporter->Report(crash_report, plugin_settings, reporter_options.second.c_str()); } /** @@ -746,26 +734,31 @@ static void RunAnalyzerActions(const char *pAnalyzer, const char *pDebugDumpDir) * @return It return results of operation. See mw_result_t. */ static mw_result_t SaveDebugDumpToDatabase(const char *pUUID, - const char *pUID, - const char *pTime, - const char *pDebugDumpDir, - map_crash_info_t& pCrashInfo) + const char *pUID, + const char *pTime, + const char *pDebugDumpDir, + map_crash_info_t& pCrashInfo) { CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase.c_str()); database->Connect(); - database->Insert(pUUID, pUID, pDebugDumpDir, pTime); - database_row_t row = database->GetUUIDData(pUUID, pUID); + /* note: if [UUID,UID] record exists, pDebugDumpDir is not updated in the record */ + database->Insert_or_Update(pUUID, pUID, pDebugDumpDir, pTime); + database_row_t row = database->GetRow(pUUID, pUID); database->DisConnect(); - mw_result_t res = GetCrashInfo(pUUID, pUID, pCrashInfo); - if (row.m_sReported == "1") - { - log("Crash is already reported"); - return MW_REPORTED; - } - if (row.m_sCount != "1") + + mw_result_t res = FillCrashInfo(pUUID, pUID, pCrashInfo); + if (res == MW_OK) { - log("Crash is in database already"); - return MW_OCCURED; + if (row.m_sReported == "1") + { + log("Crash is already reported"); + return MW_REPORTED; + } + if (row.m_sCount != "1") + { + log("Crash is in database already"); + return MW_OCCURED; + } } return res; } @@ -775,13 +768,13 @@ std::string getDebugDumpDir(const char *pUUID, { CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase.c_str()); database->Connect(); - database_row_t row = database->GetUUIDData(pUUID, pUID); + database_row_t row = database->GetRow(pUUID, pUID); database->DisConnect(); return row.m_sDebugDumpDir; } mw_result_t SaveDebugDump(const char *pDebugDumpDir, - map_crash_info_t& pCrashInfo) + map_crash_info_t& pCrashInfo) { std::string UID; std::string time; @@ -823,14 +816,13 @@ mw_result_t SaveDebugDump(const char *pDebugDumpDir, return SaveDebugDumpToDatabase(lUUID.c_str(), uid_str, time.c_str(), pDebugDumpDir, pCrashInfo); } -mw_result_t GetCrashInfo(const char *pUUID, +mw_result_t FillCrashInfo(const char *pUUID, const char *pUID, map_crash_info_t& pCrashInfo) { - pCrashInfo.clear(); CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase.c_str()); database->Connect(); - database_row_t row = database->GetUUIDData(pUUID, pUID); + database_row_t row = database->GetRow(pUUID, pUID); database->DisConnect(); std::string package; @@ -849,13 +841,10 @@ mw_result_t GetCrashInfo(const char *pUUID, catch (CABRTException& e) { error_msg("%s", e.what()); - if (e.type() == EXCEP_DD_LOAD) - { - return MW_FILE_ERROR; - } return MW_ERROR; } + pCrashInfo.clear(); add_crash_data_to_crash_info(pCrashInfo, CD_EXECUTABLE, executable); add_crash_data_to_crash_info(pCrashInfo, CD_PACKAGE, package); add_crash_data_to_crash_info(pCrashInfo, CD_DESCRIPTION, description); |
