commit 15e41fc: [Minor] Lua_mimepart: Add `get_enclosing_boundary` method

Vsevolod Stakhov vsevolod at highsecure.ru
Fri Nov 5 15:07:04 UTC 2021


Author: Vsevolod Stakhov
Date: 2021-11-05 14:59:14 +0000
URL: https://github.com/rspamd/rspamd/commit/15e41fc12fd50d7e35bc977f7a941c9b21ff15ff

[Minor] Lua_mimepart: Add `get_enclosing_boundary` method

---
 src/lua/lua_mimepart.c | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/src/lua/lua_mimepart.c b/src/lua/lua_mimepart.c
index 1f6a62f40..c03ef35fd 100644
--- a/src/lua/lua_mimepart.c
+++ b/src/lua/lua_mimepart.c
@@ -468,6 +468,14 @@ LUA_FUNCTION_DEF (mimepart, is_message);
  */
 LUA_FUNCTION_DEF (mimepart, get_boundary);
 
+/***
+ * @method mime_part:get_enclosing_boundary()
+ * Returns an enclosing boundary for a part even for multiparts. For normal parts
+ * this method is identical to `get_boundary`
+ * @return {string} boundary value or nil
+ */
+LUA_FUNCTION_DEF (mimepart, get_enclosing_boundary);
+
 /***
  * @method mime_part:get_children()
  * Returns rspamd_mimepart table of part's childer. Returns nil if mime part is not multipart
@@ -569,6 +577,7 @@ static const struct luaL_reg mimepartlib_m[] = {
 	LUA_INTERFACE_DEF (mimepart, get_cte),
 	LUA_INTERFACE_DEF (mimepart, get_filename),
 	LUA_INTERFACE_DEF (mimepart, get_boundary),
+	LUA_INTERFACE_DEF (mimepart, get_enclosing_boundary),
 	LUA_INTERFACE_DEF (mimepart, get_header),
 	LUA_INTERFACE_DEF (mimepart, get_header_raw),
 	LUA_INTERFACE_DEF (mimepart, get_header_full),
@@ -1639,6 +1648,29 @@ lua_mimepart_get_boundary (lua_State * L)
 	return 1;
 }
 
+static gint
+lua_mimepart_get_enclosing_boundary (lua_State * L)
+{
+	LUA_TRACE_POINT;
+	struct rspamd_mime_part *part = lua_check_mimepart (L), *parent;
+
+	if (part == NULL) {
+		return luaL_error (L, "invalid arguments");
+	}
+
+	parent = part->parent_part;
+
+	if (!parent || !IS_PART_MULTIPART (parent)) {
+		lua_pushnil (L);
+	}
+	else {
+		lua_pushlstring (L, parent->specific.mp->boundary.begin,
+				parent->specific.mp->boundary.len);
+	}
+
+	return 1;
+}
+
 static gint
 lua_mimepart_get_header_common (lua_State *L, enum rspamd_lua_task_header_type how)
 {


More information about the Commits mailing list