uhttpd: display errors in init script, code formatting changes, bump package version

SVN-Revision: 31572
This commit is contained in:
Jo-Philipp Wich
2012-05-03 17:19:22 +00:00
parent 54b34ccbc5
commit 8e9d914343
7 changed files with 535 additions and 496 deletions

View File

@@ -31,7 +31,7 @@ static int uh_lua_recv(lua_State *L)
length = luaL_checknumber(L, 1);
if( (length > 0) && (length <= sizeof(buffer)) )
if ((length > 0) && (length <= sizeof(buffer)))
{
FD_ZERO(&reader);
FD_SET(fileno(stdin), &reader);
@@ -41,13 +41,13 @@ static int uh_lua_recv(lua_State *L)
timeout.tv_usec = 100000;
/* check whether fd is readable */
if( select(fileno(stdin) + 1, &reader, NULL, NULL, &timeout) > 0 )
if (select(fileno(stdin) + 1, &reader, NULL, NULL, &timeout) > 0)
{
/* receive data */
rlen = read(fileno(stdin), buffer, length);
lua_pushnumber(L, rlen);
if( rlen > 0 )
if (rlen > 0)
{
lua_pushlstring(L, buffer, rlen);
return 2;
@@ -75,9 +75,9 @@ static int uh_lua_send_common(lua_State *L, int chunked)
buffer = luaL_checklstring(L, 1, &length);
if( chunked )
if (chunked)
{
if( length > 0 )
if (length > 0)
{
snprintf(chunk, sizeof(chunk), "%X\r\n", length);
slen = write(fileno(stdout), chunk, strlen(chunk));
@@ -117,7 +117,7 @@ static int uh_lua_str2str(lua_State *L, int (*xlate_func) (char *, int, const ch
inbuf = luaL_checklstring(L, 1, &inlen);
outlen = (* xlate_func)(outbuf, sizeof(outbuf), inbuf, inlen);
if( outlen < 0 )
if (outlen < 0)
luaL_error( L, "%s on URL-encode codec",
(outlen==-1) ? "buffer overflow" : "malformed string" );
@@ -177,7 +177,7 @@ lua_State * uh_lua_init(const struct config *conf)
/* load Lua handler */
switch( luaL_loadfile(L, conf->lua_handler) )
switch (luaL_loadfile(L, conf->lua_handler))
{
case LUA_ERRSYNTAX:
fprintf(stderr,
@@ -196,7 +196,7 @@ lua_State * uh_lua_init(const struct config *conf)
default:
/* compile Lua handler */
switch( lua_pcall(L, 0, 0, 0) )
switch (lua_pcall(L, 0, 0, 0))
{
case LUA_ERRRUN:
err_str = luaL_checkstring(L, -1);
@@ -218,7 +218,7 @@ lua_State * uh_lua_init(const struct config *conf)
/* test handler function */
lua_getglobal(L, UH_LUA_CALLBACK);
if( ! lua_isfunction(L, -1) )
if (! lua_isfunction(L, -1))
{
fprintf(stderr,
"Lua handler provides no " UH_LUA_CALLBACK "(), unable to continue\n");
@@ -260,21 +260,21 @@ void uh_lua_request(struct client *cl, struct http_request *req, lua_State *L)
/* spawn pipes for me->child, child->me */
if( (pipe(rfd) < 0) || (pipe(wfd) < 0) )
if ((pipe(rfd) < 0) || (pipe(wfd) < 0))
{
uh_http_sendhf(cl, 500, "Internal Server Error",
"Failed to create pipe: %s", strerror(errno));
if( rfd[0] > 0 ) close(rfd[0]);
if( rfd[1] > 0 ) close(rfd[1]);
if( wfd[0] > 0 ) close(wfd[0]);
if( wfd[1] > 0 ) close(wfd[1]);
if (rfd[0] > 0) close(rfd[0]);
if (rfd[1] > 0) close(rfd[1]);
if (wfd[0] > 0) close(wfd[0]);
if (wfd[1] > 0) close(wfd[1]);
return;
}
switch( (child = fork()) )
switch ((child = fork()))
{
case -1:
uh_http_sendhf(cl, 500, "Internal Server Error",
@@ -329,12 +329,12 @@ void uh_lua_request(struct client *cl, struct http_request *req, lua_State *L)
lua_setfield(L, -2, "SCRIPT_NAME");
/* query string, path info */
if( (query_string = strchr(req->url, '?')) != NULL )
if ((query_string = strchr(req->url, '?')) != NULL)
{
lua_pushstring(L, query_string + 1);
lua_setfield(L, -2, "QUERY_STRING");
if( (int)(query_string - req->url) > strlen(prefix) )
if ((int)(query_string - req->url) > strlen(prefix))
{
lua_pushlstring(L,
&req->url[strlen(prefix)],
@@ -344,7 +344,7 @@ void uh_lua_request(struct client *cl, struct http_request *req, lua_State *L)
lua_setfield(L, -2, "PATH_INFO");
}
}
else if( strlen(req->url) > strlen(prefix) )
else if (strlen(req->url) > strlen(prefix))
{
lua_pushstring(L, &req->url[strlen(prefix)]);
lua_setfield(L, -2, "PATH_INFO");
@@ -354,7 +354,7 @@ void uh_lua_request(struct client *cl, struct http_request *req, lua_State *L)
lua_pushnumber(L, floor(req->version * 10) / 10);
lua_setfield(L, -2, "HTTP_VERSION");
if( req->version > 1.0 )
if (req->version > 1.0)
lua_pushstring(L, "HTTP/1.1");
else
lua_pushstring(L, "HTTP/1.0");
@@ -378,12 +378,12 @@ void uh_lua_request(struct client *cl, struct http_request *req, lua_State *L)
/* essential env vars */
foreach_header(i, req->headers)
{
if( !strcasecmp(req->headers[i], "Content-Length") )
if (!strcasecmp(req->headers[i], "Content-Length"))
{
lua_pushnumber(L, atoi(req->headers[i+1]));
lua_setfield(L, -2, "CONTENT_LENGTH");
}
else if( !strcasecmp(req->headers[i], "Content-Type") )
else if (!strcasecmp(req->headers[i], "Content-Type"))
{
lua_pushstring(L, req->headers[i+1]);
lua_setfield(L, -2, "CONTENT_TYPE");
@@ -407,13 +407,13 @@ void uh_lua_request(struct client *cl, struct http_request *req, lua_State *L)
/* call */
switch( lua_pcall(L, 1, 0, 0) )
switch (lua_pcall(L, 1, 0, 0))
{
case LUA_ERRMEM:
case LUA_ERRRUN:
err_str = luaL_checkstring(L, -1);
if( ! err_str )
if (! err_str)
err_str = "Unknown error";
printf(
@@ -447,11 +447,11 @@ void uh_lua_request(struct client *cl, struct http_request *req, lua_State *L)
fd_max = max(rfd[0], wfd[1]) + 1;
/* find content length */
if( req->method == UH_HTTP_MSG_POST )
if (req->method == UH_HTTP_MSG_POST)
{
foreach_header(i, req->headers)
{
if( ! strcasecmp(req->headers[i], "Content-Length") )
if (! strcasecmp(req->headers[i], "Content-Length"))
{
content_length = atoi(req->headers[i+1]);
break;
@@ -461,7 +461,7 @@ void uh_lua_request(struct client *cl, struct http_request *req, lua_State *L)
#define ensure(x) \
do { if( x < 0 ) goto out; } while(0)
do { if (x < 0) goto out; } while(0)
data_sent = 0;
@@ -469,7 +469,7 @@ void uh_lua_request(struct client *cl, struct http_request *req, lua_State *L)
timeout.tv_usec = 0;
/* I/O loop, watch our pipe ends and dispatch child reads/writes from/to socket */
while( 1 )
while (1)
{
FD_ZERO(&reader);
FD_ZERO(&writer);
@@ -478,21 +478,22 @@ void uh_lua_request(struct client *cl, struct http_request *req, lua_State *L)
FD_SET(wfd[1], &writer);
/* wait until we can read or write or both */
if( select_intr(fd_max, &reader,
(content_length > -1) ? &writer : NULL, NULL,
(data_sent < 1) ? &timeout : NULL) > 0
) {
if (select_intr(fd_max, &reader,
(content_length > -1) ? &writer : NULL,
NULL,
(data_sent < 1) ? &timeout : NULL) > 0)
{
/* ready to write to Lua child */
if( FD_ISSET(wfd[1], &writer) )
if (FD_ISSET(wfd[1], &writer))
{
/* there is unread post data waiting */
if( content_length > 0 )
if (content_length > 0)
{
/* read it from socket ... */
if( (buflen = uh_tcp_recv(cl, buf, min(content_length, sizeof(buf)))) > 0 )
if ((buflen = uh_tcp_recv(cl, buf, min(content_length, sizeof(buf)))) > 0)
{
/* ... and write it to child's stdin */
if( write(wfd[1], buf, buflen) < 0 )
if (write(wfd[1], buf, buflen) < 0)
perror("write()");
content_length -= buflen;
@@ -501,7 +502,7 @@ void uh_lua_request(struct client *cl, struct http_request *req, lua_State *L)
/* unexpected eof! */
else
{
if( write(wfd[1], "", 0) < 0 )
if (write(wfd[1], "", 0) < 0)
perror("write()");
content_length = 0;
@@ -509,7 +510,7 @@ void uh_lua_request(struct client *cl, struct http_request *req, lua_State *L)
}
/* there is no more post data, close pipe to child's stdin */
else if( content_length > -1 )
else if (content_length > -1)
{
close(wfd[1]);
content_length = -1;
@@ -517,10 +518,10 @@ void uh_lua_request(struct client *cl, struct http_request *req, lua_State *L)
}
/* ready to read from Lua child */
if( FD_ISSET(rfd[0], &reader) )
if (FD_ISSET(rfd[0], &reader))
{
/* read data from child ... */
if( (buflen = read(rfd[0], buf, sizeof(buf))) > 0 )
if ((buflen = read(rfd[0], buf, sizeof(buf))) > 0)
{
/* pass through buffer to socket */
ensure(uh_tcp_send(cl, buf, buflen));
@@ -531,7 +532,7 @@ void uh_lua_request(struct client *cl, struct http_request *req, lua_State *L)
else
{
/* error? */
if( ! data_sent )
if (!data_sent)
uh_http_sendhf(cl, 500, "Internal Server Error",
"The Lua child did not produce any response");
@@ -543,7 +544,7 @@ void uh_lua_request(struct client *cl, struct http_request *req, lua_State *L)
/* timeout exceeded or interrupted by SIGCHLD */
else
{
if( (errno != EINTR) && ! data_sent )
if ((errno != EINTR) && ! data_sent)
{
ensure(uh_http_sendhf(cl, 504, "Gateway Timeout",
"The Lua script took too long to produce "
@@ -558,7 +559,7 @@ void uh_lua_request(struct client *cl, struct http_request *req, lua_State *L)
close(rfd[0]);
close(wfd[1]);
if( !kill(child, 0) )
if (!kill(child, 0))
{
kill(child, SIGTERM);
waitpid(child, NULL, 0);