]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Fix task:set_message to be more consistent
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 22 Jul 2019 11:10:41 +0000 (12:10 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 22 Jul 2019 11:10:41 +0000 (12:10 +0100)
src/lua/lua_task.c

index 8d943ed1fd7208075408a7fbea703b7fbba8c249..36fed2e00d757423412a64f27d52c471fd98778e 100644 (file)
@@ -79,11 +79,11 @@ LUA_FUNCTION_DEF (task, load_from_string);
 LUA_FUNCTION_DEF (task, get_message);
 /***
  * @method task:set_message(msg)
- * Updates task message with another message, you should normally call
- * `process_message` afterwards to fill internal Rspamd structures.
+ * Updates task message with another message; It also parses a message to
+ * fill the internal structures.
  * Input might be a string, a lua_text or a table of the former stuff.
  * @param {string/text/table} msg new message to set
- * @return {rspamd_text} task raw content
+ * @return {boolean,number} if a message has been set + its raw size
  */
 LUA_FUNCTION_DEF (task, set_message);
 /***
@@ -1417,6 +1417,7 @@ lua_task_set_message (lua_State * L)
        LUA_TRACE_POINT;
        struct rspamd_lua_text *t;
        struct rspamd_task *task = lua_check_task (L, 1);
+       gboolean message_set = FALSE;
 
        if (task) {
                gsize final_len = 0;
@@ -1479,6 +1480,7 @@ lua_task_set_message (lua_State * L)
                                task->flags |= RSPAMD_TASK_FLAG_MESSAGE_REWRITE;
                                task->msg.begin = buf;
                                task->msg.len = final_len;
+                               message_set = TRUE;
                        }
 
                }
@@ -1504,10 +1506,25 @@ lua_task_set_message (lua_State * L)
                                task->msg.begin = buf;
                                task->msg.len = final_len;
                                task->flags |= RSPAMD_TASK_FLAG_MESSAGE_REWRITE;
+                               message_set = TRUE;
                        }
                }
 
-               lua_pushinteger (L, final_len);
+               if (message_set) {
+                       if (rspamd_message_parse (task)) {
+                               rspamd_message_process (task);
+                               lua_pushboolean (L, TRUE);
+                               lua_pushinteger (L, final_len);
+
+                               return 2;
+                       }
+                       else {
+                               lua_pushboolean (L, FALSE);
+                       }
+               }
+               else {
+                       lua_pushboolean (L, FALSE);
+               }
        }
        else {
                return luaL_error (L, "invalid arguments");