projects
/
project
/
luci.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
927d475
)
uhttpd: expose uh_http_sendc() to Lua, move server functions into uhttpd namespace
author
Jo-Philipp Wich
<jow@openwrt.org>
Sun, 21 Mar 2010 04:18:20 +0000
(
04:18
+0000)
committer
Jo-Philipp Wich
<jow@openwrt.org>
Sun, 21 Mar 2010 04:18:20 +0000
(
04:18
+0000)
contrib/package/uhttpd/src/uhttpd-lua.c
patch
|
blob
|
history
diff --git
a/contrib/package/uhttpd/src/uhttpd-lua.c
b/contrib/package/uhttpd/src/uhttpd-lua.c
index
16b627f
..
2c2821d
100644
(file)
--- a/
contrib/package/uhttpd/src/uhttpd-lua.c
+++ b/
contrib/package/uhttpd/src/uhttpd-lua.c
@@
-80,7
+80,7
@@
static int uh_lua_recv(lua_State *L)
return 1;
}
return 1;
}
-static int uh_lua_send
(lua_State *L
)
+static int uh_lua_send
_common(lua_State *L, int chunked
)
{
size_t length;
const char *buffer;
{
size_t length;
const char *buffer;
@@
-93,7
+93,11
@@
static int uh_lua_send(lua_State *L)
if( (cl != NULL) && (length > 0) )
{
if( (cl != NULL) && (length > 0) )
{
- slen = uh_tcp_send(cl, buffer, length);
+ if( chunked )
+ slen = uh_http_sendc(cl, buffer, length);
+ else
+ slen = uh_tcp_send(cl, buffer, length);
+
lua_pushnumber(L, slen);
return 1;
}
lua_pushnumber(L, slen);
return 1;
}
@@
-102,6
+106,16
@@
static int uh_lua_send(lua_State *L)
return 1;
}
return 1;
}
+static int uh_lua_send(lua_State *L)
+{
+ return uh_lua_send_common(L, 0);
+}
+
+static int uh_lua_sendc(lua_State *L)
+{
+ return uh_lua_send_common(L, 1);
+}
+
static int uh_lua_urldecode(lua_State *L)
{
size_t inlen, outlen;
static int uh_lua_urldecode(lua_State *L)
{
size_t inlen, outlen;
@@
-140,15
+154,24
@@
lua_State * uh_lua_init(const char *handler)
lua_settop(L, 0);
}
lua_settop(L, 0);
}
+ /* build uhttpd api table */
+ lua_newtable(L);
+
/* register global send and receive functions */
lua_pushcfunction(L, uh_lua_recv);
/* register global send and receive functions */
lua_pushcfunction(L, uh_lua_recv);
- lua_setfield(L,
LUA_GLOBALSINDEX
, "recv");
+ lua_setfield(L,
-2
, "recv");
lua_pushcfunction(L, uh_lua_send);
lua_pushcfunction(L, uh_lua_send);
- lua_setfield(L, LUA_GLOBALSINDEX, "send");
+ lua_setfield(L, -2, "send");
+
+ lua_pushcfunction(L, uh_lua_sendc);
+ lua_setfield(L, -2, "sendc");
lua_pushcfunction(L, uh_lua_urldecode);
lua_pushcfunction(L, uh_lua_urldecode);
- lua_setfield(L, LUA_GLOBALSINDEX, "urldecode");
+ lua_setfield(L, -2, "urldecode");
+
+ /* _G.uhttpd = { ... } */
+ lua_setfield(L, LUA_GLOBALSINDEX, "uhttpd");
/* load Lua handler */
/* load Lua handler */