[libreport/f17] Update uReport patch
Jakub Filak
jfilak at fedoraproject.org
Wed Aug 29 09:48:08 UTC 2012
commit 9efd795d867c289dbee20c456966261d11ad7e49
Author: Jakub Filak <jfilak at redhat.com>
Date: Wed Aug 29 10:13:30 2012 +0200
Update uReport patch
...2-ureport-doesnt-fail-on-validation-error.patch | 57 ---------
...3-ureport-doesnt-fail-on-validation-error.patch | 121 ++++++++++++++++++++
libreport.spec | 7 +-
3 files changed, 126 insertions(+), 59 deletions(-)
---
diff --git a/libreport-2.0.13-ureport-doesnt-fail-on-validation-error.patch b/libreport-2.0.13-ureport-doesnt-fail-on-validation-error.patch
new file mode 100644
index 0000000..8729120
--- /dev/null
+++ b/libreport-2.0.13-ureport-doesnt-fail-on-validation-error.patch
@@ -0,0 +1,121 @@
+From f34a1ba30b825332d7ae5dd115b75f5cd79e01a5 Mon Sep 17 00:00:00 2001
+From: Jakub Filak <jfilak at redhat.com>
+Date: Wed, 29 Aug 2012 09:57:16 +0200
+Subject: [LIBREPORT PATCH] trac#680: only for Fedora package 17 repository
+ patch (not to push to abrt git)
+
+reporter-ureport doesn't fail on "Validation error" response becase we
+want to allow users to report problems created by older version of
+abrt/libreport
+
+Signed-off-by: Jakub Filak <jfilak at redhat.com>
+---
+ src/plugins/ureport.c | 43 ++++++++++++++++++++++++++++++++++---------
+ 1 file changed, 34 insertions(+), 9 deletions(-)
+
+diff --git a/src/plugins/ureport.c b/src/plugins/ureport.c
+index 96c7878..6569061 100644
+--- a/src/plugins/ureport.c
++++ b/src/plugins/ureport.c
+@@ -51,6 +51,7 @@ enum response_type
+ UREPORT_SERVER_RESP_UNKNOWN_TYPE,
+ UREPORT_SERVER_RESP_KNOWN,
+ UREPORT_SERVER_RESP_ERROR,
++ UREPORT_SERVER_RESP_REJECTED,
+ };
+
+ struct ureport_server_response {
+@@ -74,6 +75,13 @@ static bool ureport_server_parse_json(json_object *json, struct ureport_server_r
+ {
+ out_response->type = UREPORT_SERVER_RESP_ERROR;
+ out_response->value = json_object_to_json_string(obj);
++
++ /* try to detect validation errors */
++ /* these errors are probably caused by reporting a bug created by older libreport version */
++ /* we wan't to allow users report old problems thus we must exit with SUCCESS code */
++ if (prefixcmp(out_response->value, "Validation failed:"))
++ out_response->type = UREPORT_SERVER_RESP_REJECTED;
++
+ return true;
+ }
+
+@@ -99,17 +107,21 @@ static bool ureport_server_parse_json(json_object *json, struct ureport_server_r
+ return false;
+ }
+
+-static bool check_response_statuscode(post_state_t *post_state,
++static bool check_response_statuscode(post_state_t *post_state,
+ const char *url)
+ {
+ if (post_state->http_resp_code != 202)
+ {
+ char *errmsg = post_state->curl_error_msg;
+ if (errmsg && *errmsg)
+- error_msg("%s '%s'", errmsg, url);
++ {
++ VERB1 error_msg("%s '%s'", errmsg, url);
++ }
+ else
+- error_msg("Unexpected HTTP status code: %d",
+- post_state->http_resp_code);
++ {
++ VERB1 error_msg("Unexpected HTTP status code: %d",
++ post_state->http_resp_code);
++ }
+
+ return false;
+ }
+@@ -189,7 +201,12 @@ int main(int argc, char **argv)
+ dd_close(dd);
+
+ if (!ureport_result || !ureport_result->bthash)
+- error_msg_and_die(_("This problem does not have an uReport assigned."));
++ {
++ /* these errors are probably caused by reporting a bug */
++ /* created by older libreport version */
++ VERB1 error_msg(_("This problem does not have an uReport assigned."));
++ return 0;
++ }
+
+ if (!bz_result || !bz_result->url)
+ error_msg_and_die(_("This problem has not been reported to Bugzilla."));
+@@ -234,10 +251,6 @@ int main(int argc, char **argv)
+
+ int ret = 1; /* return 1 by default */
+
+- if (!check_response_statuscode(post_state, dest_url))
+- /* check_response_statuscode() already logged an error message */
+- goto err;
+-
+ json_object *const json = json_tokener_parse(post_state->body);
+
+ if (is_error(json))
+@@ -264,6 +277,12 @@ int main(int argc, char **argv)
+ switch (response.type)
+ {
+ case UREPORT_SERVER_RESP_KNOWN:
++ if (!check_response_statuscode(post_state, dest_url))
++ {
++ error_msg("uReport server response type mismatch");
++ goto format_err;
++ }
++
+ VERB1 log("is known: %s", response.value);
+ ret = 0;
+
+@@ -288,6 +307,12 @@ int main(int argc, char **argv)
+ log("THANKYOU");
+ }
+ break;
++ case UREPORT_SERVER_RESP_REJECTED:
++ /* it is silent because we don't want to scary users */
++ /* with a weired message about missing data */
++ VERB1 log("server rejected uReport: %s", response.value);
++ ret = 0;
++ break;
+ case UREPORT_SERVER_RESP_ERROR:
+ VERB1 log("server side error: %s", response.value);
+ ret = 1; /* just to be sure */
+--
+1.7.11.4
+
diff --git a/libreport.spec b/libreport.spec
index fd25af6..c06d8b4 100644
--- a/libreport.spec
+++ b/libreport.spec
@@ -5,13 +5,13 @@
Summary: Generic library for reporting various problems
Name: libreport
Version: 2.0.13
-Release: 1%{?dist}
+Release: 2%{?dist}
License: GPLv2+
Group: System Environment/Libraries
URL: https://fedorahosted.org/abrt/
Source: https://fedorahosted.org/released/abrt/%{name}-%{version}.tar.gz
# This patch is desired only in F17 because of backward compatibility
-Patch0: libreport-2.0.12-ureport-doesnt-fail-on-validation-error.patch
+Patch0: libreport-2.0.13-ureport-doesnt-fail-on-validation-error.patch
BuildRequires: dbus-devel
BuildRequires: gtk3-devel
@@ -400,6 +400,9 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%config(noreplace) %{_sysconfdir}/libreport/events.d/uploader_event.conf
%changelog
+* Wed Aug 29 2012 Jakub Filak <jfilak at redhat.com> 2.0.13-2
+- ureport doesn't fail on "Validition error" server response
+
* Wed Aug 22 2012 Jakub Filak <jfilak at redhat.com> 2.0.13-1
- reporter-ureport: save backtrace hash to reported_to
- trac#683: show the description file in bugzilla comment 0
More information about the scm-commits
mailing list