mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2025-04-21 12:27:27 +03:00
[package] uhttpd:
- make script timeout configurable - catch SIGCHLD to properly interrupt select() - flag listen and client sockets as close-on-exec git-svn-id: svn://svn.openwrt.org/openwrt/trunk@20500 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
@@ -42,6 +42,11 @@ static void uh_sigterm(int sig)
|
||||
run = 0;
|
||||
}
|
||||
|
||||
static void uh_sigchld(int sig)
|
||||
{
|
||||
while( waitpid(-1, NULL, WNOHANG) > 0 ) { }
|
||||
}
|
||||
|
||||
static void uh_config_parse(const char *path)
|
||||
{
|
||||
FILE *c;
|
||||
@@ -155,6 +160,7 @@ static int uh_socket_bind(
|
||||
|
||||
/* add socket to server fd set */
|
||||
FD_SET(sock, serv_fds);
|
||||
fd_cloexec(sock);
|
||||
*max_fd = max(*max_fd, sock);
|
||||
|
||||
bound++;
|
||||
@@ -432,6 +438,8 @@ int main (int argc, char **argv)
|
||||
|
||||
sa.sa_handler = SIG_IGN;
|
||||
sigaction(SIGPIPE, &sa, NULL);
|
||||
|
||||
sa.sa_handler = uh_sigchld;
|
||||
sigaction(SIGCHLD, &sa, NULL);
|
||||
|
||||
sa.sa_handler = uh_sigterm;
|
||||
@@ -485,7 +493,7 @@ int main (int argc, char **argv)
|
||||
}
|
||||
#endif
|
||||
|
||||
while( (opt = getopt(argc, argv, "fC:K:p:s:h:c:l:L:d:r:m:x:")) > 0 )
|
||||
while( (opt = getopt(argc, argv, "fC:K:p:s:h:c:l:L:d:r:m:x:t:")) > 0 )
|
||||
{
|
||||
switch(opt)
|
||||
{
|
||||
@@ -593,6 +601,13 @@ int main (int argc, char **argv)
|
||||
break;
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_CGI) || defined(HAVE_LUA)
|
||||
/* script timeout */
|
||||
case 't':
|
||||
conf.script_timeout = atoi(optarg);
|
||||
break;
|
||||
#endif
|
||||
|
||||
/* no fork */
|
||||
case 'f':
|
||||
nofork = 1;
|
||||
@@ -644,6 +659,9 @@ int main (int argc, char **argv)
|
||||
#endif
|
||||
#ifdef HAVE_CGI
|
||||
" -x string URL prefix for CGI handler, default is '/cgi-bin'\n"
|
||||
#endif
|
||||
#if defined(HAVE_CGI) || defined(HAVE_LUA)
|
||||
" -t seconds CGI and Lua script timeout in seconds, default is 60\n"
|
||||
#endif
|
||||
" -d string URL decode given string\n"
|
||||
" -r string Specify basic auth realm\n"
|
||||
@@ -684,6 +702,12 @@ int main (int argc, char **argv)
|
||||
/* config file */
|
||||
uh_config_parse(conf.file);
|
||||
|
||||
#if defined(HAVE_CGI) || defined(HAVE_LUA)
|
||||
/* default script timeout */
|
||||
if( conf.script_timeout <= 0 )
|
||||
conf.script_timeout = 60;
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CGI
|
||||
/* default cgi prefix */
|
||||
if( ! conf.cgi_prefix )
|
||||
@@ -794,6 +818,7 @@ int main (int argc, char **argv)
|
||||
|
||||
/* add client socket to global fdset */
|
||||
FD_SET(new_fd, &used_fds);
|
||||
fd_cloexec(new_fd);
|
||||
max_fd = max(max_fd, new_fd);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user