MINOR: lua: txn: add binding for closing the client connection.
diff --git a/src/hlua.c b/src/hlua.c
index 8b72763..e5e4ec8 100644
--- a/src/hlua.c
+++ b/src/hlua.c
@@ -2285,6 +2285,25 @@
return 1;
}
+/* This function is an Lua binding that send pending data
+ * to the client, and close the stream interface.
+ */
+__LJMP static int hlua_txn_close(lua_State *L)
+{
+ MAY_LJMP(check_args(L, 1, "close"));
+
+ struct hlua_txn *s = MAY_LJMP(hlua_checktxn(L, 1));
+
+ channel_abort(s->s->si[0].ib);
+ channel_auto_close(s->s->si[0].ib);
+ channel_erase(s->s->si[0].ib);
+ channel_auto_read(s->s->si[0].ob);
+ channel_auto_close(s->s->si[0].ob);
+ channel_shutr_now(s->s->si[0].ob);
+
+ return 0;
+}
+
/* This function is an LUA binding. It is called with each sample-fetch.
* It uses closure argument to store the associated sample-fetch. It
* returns only one argument or throws an error. An error is throwed
@@ -3127,7 +3146,7 @@
struct tcp_rule *rule, char **err)
{
if (!hlua_parse_rule(args, cur_arg, px, (struct hlua_rule **)&rule->act_prm.data, err))
- return -1;
+ return 0;
rule->action = TCP_ACT_CUSTOM;
rule->action_ptr = hlua_tcp_req_act_wrapper;
return 1;
@@ -3138,7 +3157,7 @@
struct tcp_rule *rule, char **err)
{
if (!hlua_parse_rule(args, cur_arg, px, (struct hlua_rule **)&rule->act_prm.data, err))
- return -1;
+ return 0;
rule->action = TCP_ACT_CUSTOM;
rule->action_ptr = hlua_tcp_res_act_wrapper;
return 1;
@@ -3440,6 +3459,7 @@
hlua_class_function(gL.T, "get_priv", hlua_getpriv);
hlua_class_function(gL.T, "req_channel", hlua_txn_req_channel);
hlua_class_function(gL.T, "res_channel", hlua_txn_res_channel);
+ hlua_class_function(gL.T, "close", hlua_txn_close);
lua_settable(gL.T, -3);