From: Vsevolod Stakhov Date: Mon, 4 Feb 2019 15:43:25 +0000 (+0000) Subject: [Minor] Lua_mimepart: Return raw content for visually empty html parts X-Git-Tag: 1.9.0~218 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d5c97700dfea628844e0e67eb4769fd4288473c6;p=thirdparty%2Frspamd.git [Minor] Lua_mimepart: Return raw content for visually empty html parts --- diff --git a/src/lua/lua_mimepart.c b/src/lua/lua_mimepart.c index 50cdaa7b79..b66ad4215a 100644 --- a/src/lua/lua_mimepart.c +++ b/src/lua/lua_mimepart.c @@ -617,7 +617,7 @@ lua_textpart_get_content (lua_State * L) gsize len; const gchar *start, *type = NULL; - if (part == NULL || IS_PART_EMPTY (part)) { + if (part == NULL) { lua_pushnil (L); return 1; } @@ -626,30 +626,56 @@ lua_textpart_get_content (lua_State * L) type = lua_tostring (L, 2); } - t = lua_newuserdata (L, sizeof (*t)); - rspamd_lua_setclass (L, "rspamd{text}", -1); - if (!type) { + if (IS_PART_EMPTY (part)) { + lua_pushnil (L); + return 1; + } start = part->utf_content->data; len = part->utf_content->len; } else if (strcmp (type, "content") == 0) { + if (IS_PART_EMPTY (part)) { + lua_pushnil (L); + return 1; + } + start = part->utf_content->data; len = part->utf_content->len; } else if (strcmp (type, "content_oneline") == 0) { + if (IS_PART_EMPTY (part)) { + lua_pushnil (L); + return 1; + } + start = part->utf_stripped_content->data; len = part->utf_stripped_content->len; } else if (strcmp (type, "raw_parsed") == 0) { + if (part->parsed.len == 0) { + lua_pushnil (L); + return 1; + } + start = part->parsed.begin; len = part->parsed.len; } else if (strcmp (type, "raw_utf") == 0) { + if (part->utf_raw_content == NULL || part->utf_raw_content->len == 0) { + lua_pushnil (L); + return 1; + } + start = part->utf_raw_content->data; len = part->utf_raw_content->len; } else if (strcmp (type, "raw") == 0) { + if (part->raw.len == 0) { + lua_pushnil (L); + return 1; + } + start = part->raw.begin; len = part->raw.len; } @@ -657,6 +683,9 @@ lua_textpart_get_content (lua_State * L) return luaL_error (L, "invalid content type: %s", type); } + t = lua_newuserdata (L, sizeof (*t)); + rspamd_lua_setclass (L, "rspamd{text}", -1); + t->start = start; t->len = len; t->flags = 0;