Skip to content

Commit 6fa77b8

Browse files
committed
synchronized with lua-nginx-module #53519cd.
feature: allowed sending boolean and nil values in cosockets. Thanks spacewander for the upstream patch.
1 parent 6b83b0b commit 6fa77b8

File tree

2 files changed

+77
-0
lines changed

2 files changed

+77
-0
lines changed

src/subsys/ngx_subsys_lua_socket_tcp.c.tt2

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2859,6 +2859,20 @@ ngx_[% subsys %]_lua_socket_tcp_send(lua_State *L)
28592859
len = ngx_[% subsys %]_lua_calc_strlen_in_table(L, 2, 2, 1 /* strict */);
28602860
break;
28612861

2862+
case LUA_TNIL:
2863+
len = sizeof("nil") - 1;
2864+
break;
2865+
2866+
case LUA_TBOOLEAN:
2867+
if (lua_toboolean(L, 2)) {
2868+
len = sizeof("true") - 1;
2869+
2870+
} else {
2871+
len = sizeof("false") - 1;
2872+
}
2873+
2874+
break;
2875+
28622876
default:
28632877
msg = lua_pushfstring(L, "string, number, boolean, nil, "
28642878
"or array table expected, got %s",
@@ -2894,6 +2908,29 @@ ngx_[% subsys %]_lua_socket_tcp_send(lua_State *L)
28942908
b->last = ngx_[% subsys %]_lua_copy_str_in_table(L, -1, b->last);
28952909
break;
28962910

2911+
case LUA_TNIL:
2912+
*b->last++ = 'n';
2913+
*b->last++ = 'i';
2914+
*b->last++ = 'l';
2915+
break;
2916+
2917+
case LUA_TBOOLEAN:
2918+
if (lua_toboolean(L, 2)) {
2919+
*b->last++ = 't';
2920+
*b->last++ = 'r';
2921+
*b->last++ = 'u';
2922+
*b->last++ = 'e';
2923+
2924+
} else {
2925+
*b->last++ = 'f';
2926+
*b->last++ = 'a';
2927+
*b->last++ = 'l';
2928+
*b->last++ = 's';
2929+
*b->last++ = 'e';
2930+
}
2931+
2932+
break;
2933+
28972934
default:
28982935
return luaL_error(L, "impossible to reach here");
28992936
}

src/subsys/ngx_subsys_lua_socket_udp.c.tt2

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -934,6 +934,20 @@ ngx_[% subsys %]_lua_socket_udp_send(lua_State *L)
934934
len = ngx_[% subsys %]_lua_calc_strlen_in_table(L, 2, 2, 1 /* strict */);
935935
break;
936936

937+
case LUA_TNIL:
938+
len = sizeof("nil") - 1;
939+
break;
940+
941+
case LUA_TBOOLEAN:
942+
if (lua_toboolean(L, 2)) {
943+
len = sizeof("true") - 1;
944+
945+
} else {
946+
len = sizeof("false") - 1;
947+
}
948+
949+
break;
950+
937951
default:
938952
msg = lua_pushfstring(L, "string, number, boolean, nil, "
939953
"or array table expected, got %s",
@@ -956,6 +970,32 @@ ngx_[% subsys %]_lua_socket_udp_send(lua_State *L)
956970
(void) ngx_[% subsys %]_lua_copy_str_in_table(L, 2, query.data);
957971
break;
958972

973+
case LUA_TNIL:
974+
p = query.data;
975+
*p++ = 'n';
976+
*p++ = 'i';
977+
*p++ = 'l';
978+
break;
979+
980+
case LUA_TBOOLEAN:
981+
p = query.data;
982+
983+
if (lua_toboolean(L, 2)) {
984+
*p++ = 't';
985+
*p++ = 'r';
986+
*p++ = 'u';
987+
*p++ = 'e';
988+
989+
} else {
990+
*p++ = 'f';
991+
*p++ = 'a';
992+
*p++ = 'l';
993+
*p++ = 's';
994+
*p++ = 'e';
995+
}
996+
997+
break;
998+
959999
default:
9601000
return luaL_error(L, "impossible to reach here");
9611001
}

0 commit comments

Comments
 (0)