[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