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 <[email protected]>
---
 src/plugins/ureport.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/src/plugins/ureport.c b/src/plugins/ureport.c
index 3913a89..6224117 100644
--- a/src/plugins/ureport.c
+++ b/src/plugins/ureport.c
@@ -47,6 +47,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 {
@@ -69,6 +70,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;
     }
 
@@ -181,6 +189,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.2

Reply via email to