Browse Source

[Minor] Support both text and string on return value

tags/2.7
Vsevolod Stakhov 3 years ago
parent
commit
f589cc4766
1 changed files with 14 additions and 20 deletions
  1. 14
    20
      src/lua/lua_worker.c

+ 14
- 20
src/lua/lua_worker.c View 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)));
}
}


Loading…
Cancel
Save