extern int msock; /* master listening socket */
extern int verbosity; /* Logging level */
extern char static_icon_dir[PATH_MAX]; /* where should we find our mime icons */
-
+extern long MaxRead;
int is_https = 0; /* Nonzero if I am an HTTPS service */
int follow_xff = 0; /* Follow X-Forwarded-For: header */
int home_specified = 0; /* did the user specify a homedir? */
size_t basesize = 2; /* how big should strbufs be on creation? */
pthread_t SessThread; /* Thread descriptor */
pthread_attr_t attr; /* Thread attributes */
- int a, i; /* General-purpose variables */
+ int a; /* General-purpose variable */
char tracefile[PATH_MAX];
char ip_addr[256]="0.0.0.0";
int relh=0;
/* Parse command line */
#ifdef HAVE_OPENSSL
- while ((a = getopt(argc, argv, "u:h:i:p:t:T:B:x:dD:G:cfsS:Z")) != EOF)
+ while ((a = getopt(argc, argv, "R:u:h:i:p:t:T:B:x:dD:G:cfsS:Z")) != EOF)
#else
- while ((a = getopt(argc, argv, "u:h:i:p:t:T:B:x:dD:G:cfZ")) != EOF)
+ while ((a = getopt(argc, argv, "R:u:h:i:p:t:T:B:x:dD:G:cfZ")) != EOF)
#endif
switch (a) {
case 'u':
I18nDump = NewStrBufPlain(HKEY("int templatestrings(void)\n{\n"));
I18nDumpFile = optarg;
break;
+ case 'R':
+ MaxRead = atol(optarg);
+ break;
default:
fprintf(stderr, "usage: webcit "
"[-i ip_addr] [-p http_port] "
start_daemon(pidfile);
}
else {
+ signal(SIGINT, graceful_shutdown);
signal(SIGHUP, graceful_shutdown);
}
#endif
drop_root(UID);
- /* Start a few initial worker threads */
- for (i = 0; i < (MIN_WORKER_THREADS); ++i) {
- spawn_another_worker_thread();
- }
-
- /* now the original thread becomes another worker */
+ /* Become a worker thread. More worker threads will be spawned as they are needed. */
worker_entry();
ShutDownLibCitadel ();
return 0;