|
|
@@ -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))); |
|
|
|
} |
|
|
|
} |
|
|
|
|