]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Support both text and string on return value
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 18 Dec 2020 16:06:34 +0000 (16:06 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 18 Dec 2020 16:07:19 +0000 (16:07 +0000)
src/lua/lua_worker.c

index c11e49f2e5b1aaaf0cdd876b3bfae2dd40254279..f9031c10a900318238e79afb0c4c1e86cd45870c 100644 (file)
@@ -499,8 +499,6 @@ rspamd_lua_execute_lua_subprocess (lua_State *L,
 {
        gint err_idx, r;
        guint64 wlen = 0;
-       const gchar *ret = NULL;
-       gsize retlen;
 
        lua_pushcfunction (L, &rspamd_lua_traceback);
        err_idx = lua_gettop (L);
@@ -526,29 +524,25 @@ rspamd_lua_execute_lua_subprocess (lua_State *L,
                }
        }
        else {
-               if (lua_type (L, -1) == LUA_TSTRING) {
-                       ret = lua_tolstring (L, -1, &retlen);
-                       wlen = retlen;
-               }
-               else {
-                       struct rspamd_lua_text *t;
+               struct rspamd_lua_text *t = lua_check_text_or_string (L, -1);
 
-                       t = lua_check_text (L, -1);
+               if (t) {
+                       wlen = t->len;
+                       r = write (cbdata->sp[1], &wlen, sizeof (wlen));
 
-                       if (t) {
-                               ret = t->start;
-                               wlen = t->len;
+                       if (r == -1) {
+                               msg_err ("write failed: %s", strerror (errno));
                        }
-               }
 
-               r = write (cbdata->sp[1], &wlen, sizeof (wlen));
-               if (r == -1) {
-                       msg_err ("write failed: %s", strerror (errno));
-               }
+                       r = write (cbdata->sp[1], t->start, wlen);
 
-               r = write (cbdata->sp[1], ret, wlen);
-               if (r == -1) {
-                       msg_err ("write failed: %s", strerror (errno));
+                       if (r == -1) {
+                               msg_err ("write failed: %s", strerror (errno));
+                       }
+               }
+               else {
+                       msg_err ("subprocess: invalid return value: %s",
+                                       lua_typename (L, lua_type (L, -1)));
                }
        }