]> source.dussan.org Git - rspamd.git/commitdiff
Improve error reporting for HTTP sessions.
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 1 May 2014 14:26:39 +0000 (15:26 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 1 May 2014 14:26:39 +0000 (15:26 +0100)
src/libmime/protocol.c
src/worker.c

index 52336c81ce57ab61d4fb15d800ff03654ce03566..69d849d52eeb0431bf061b6b16b591a38e8cf84d 100644 (file)
@@ -780,8 +780,10 @@ rspamd_protocol_write_reply (struct rspamd_task *task)
        top = ucl_object_typed_new (UCL_OBJECT);
        debug_task ("writing reply to client");
        if (task->error_code != 0) {
-               msg->code = task->error_code;
-               ucl_object_insert_key (top, ucl_object_fromstring (task->last_error), "error", 0, false);
+               msg->code = 500 + task->error_code % 100;
+               msg->status = g_string_new (task->last_error);
+               ucl_object_insert_key (top, ucl_object_fromstring (task->last_error),
+                               "error", 0, false);
                msg->body = g_string_sized_new (256);
                rspamd_ucl_emit_gstring (top, UCL_EMIT_JSON_COMPACT, msg->body);
                ucl_object_unref (top);
index aca667a680687898ec98521c87fef3d3fb79af3e..20945bd89e5ee941cc62407fc7fe9dd04fff8b6d 100644 (file)
@@ -142,7 +142,7 @@ rspamd_worker_error_handler (struct rspamd_http_connection *conn, GError *err)
        if (task->state != CLOSING_CONNECTION) {
                /* We still need to write a reply */
                task->error_code = err->code;
-               task->last_error = err->message;
+               task->last_error = rspamd_mempool_strdup (task->task_pool, err->message);
                task->state = WRITE_REPLY;
                rspamd_protocol_write_reply (task);
        }