From d41b3c70a2c20f8b8fa3a20a687126ff6a2a75af Mon Sep 17 00:00:00 2001 From: Michal Toman <[email protected]> Date: Wed, 15 Aug 2012 14:49:34 +0200 Subject: [PATCH] reporter-ureport: save backtrace hash to reported_to
Signed-off-by: Michal Toman <[email protected]> --- src/include/dump_dir.h | 1 + src/lib/dump_dir.c | 6 ++++++ src/plugins/ureport.c | 16 ++++++++++++++++ 3 files changed, 23 insertions(+), 0 deletions(-) diff --git a/src/include/dump_dir.h b/src/include/dump_dir.h index 1073949..21e8a2b 100644 --- a/src/include/dump_dir.h +++ b/src/include/dump_dir.h @@ -79,6 +79,7 @@ void add_reported_to(struct dump_dir *dd, const char *line); struct report_result { char *url; char *msg; + char *bthash; /* char *whole_line; */ /* time_t timestamp; */ /* ^^^ if you add more fields, don't forget to update free_report_result() */ diff --git a/src/lib/dump_dir.c b/src/lib/dump_dir.c index 6a44359..0a0d760 100644 --- a/src/lib/dump_dir.c +++ b/src/lib/dump_dir.c @@ -906,6 +906,7 @@ void free_report_result(struct report_result *result) return; free(result->url); free(result->msg); + free(result->bthash); free(result); } @@ -931,6 +932,11 @@ static report_result_t *parse_reported_line(const char *line) free(result->url); result->url = xstrndup(line + 4, end - (line + 4)); } + if (strncmp(line, "BTHASH=", 7) == 0) + { + free(result->bthash); + result->bthash = xstrndup(line + 7, end - (line + 7)); + } //else //if (strncmp(line, "TIME=", 5) == 0) //{ diff --git a/src/plugins/ureport.c b/src/plugins/ureport.c index 3913a89..f5e9229 100644 --- a/src/plugins/ureport.c +++ b/src/plugins/ureport.c @@ -53,6 +53,7 @@ struct ureport_server_response { enum response_type type; const char *value; const char *message; + const char *bthash; }; /* @@ -83,6 +84,10 @@ static bool ureport_server_parse_json(json_object *json, struct ureport_server_r if (message) out_response->message = json_object_get_string(message); + json_object *bthash = json_object_object_get(json, "bthash"); + if (bthash) + out_response->bthash = json_object_get_string(bthash); + return true; } @@ -157,6 +162,7 @@ int main(int argc, char **argv) .type=UREPORT_SERVER_RESP_UNKNOWN_TYPE, .value=NULL, .message=NULL, + .bthash=NULL, }; const bool is_valid_response = ureport_server_parse_json(json, &response); @@ -172,6 +178,16 @@ int main(int argc, char **argv) case UREPORT_SERVER_RESP_KNOWN: VERB1 log("is known: %s", response.value); ret = 0; + + if (response.bthash) + { + dd = dd_opendir(dump_dir_path, /* flags */ 0); + char *msg = xasprintf("uReport: BTHASH=%s", response.bthash); + add_reported_to(dd, msg); + free(msg); + dd_close(dd); + } + /* If a reported problem is not known then emit NEEDMORE */ if (strcmp("true", response.value) == 0) { -- 1.7.7
