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? */
+int time_to_die = 0; /**< shold we shut down? */
extern void *context_loop(int);
extern void *housekeeping_loop(void);
extern pthread_mutex_t SessionListMutex;
extern pthread_key_t MyConKey;
+
+char ctdl_key_dir[PATH_MAX]=SSL_DIR;
+char file_crpt_file_key[PATH_MAX]="";
+char file_crpt_file_csr[PATH_MAX]="";
+char file_crpt_file_cer[PATH_MAX]="";
+
char socket_dir[PATH_MAX]; /**< where to talk to our citadel server */
static const char editor_absolut_dir[PATH_MAX]=EDITORDIR; /**< nailed to what configure gives us. */
static char static_dir[PATH_MAX]; /**< calculated on startup */
* Strip any trailing non-printable characters.
*/
buf[i] = 0;
- while ((strlen(buf) > 0) && (!isprint(buf[strlen(buf) - 1]))) {
- buf[strlen(buf) - 1] = 0;
+ while ((i > 0) && (!isprint(buf[i - 1]))) {
+ buf[--i] = 0;
}
return (retval);
}
* param signum the signal we want to forward
*/
pid_t current_child;
-void graceful_shutdown(int signum) {
+void graceful_shutdown_watcher(int signum) {
+ lprintf (1, "bye; shutting down watcher.");
kill(current_child, signum);
exit(0);
}
+/**
+ * \brief shut us down the regular way.
+ * param signum the signal we want to forward
+ */
+pid_t current_child;
+void graceful_shutdown(int signum) {
+// kill(current_child, signum);
+ lprintf (1, "bye going down gracefull.");
+ time_to_die = 1;
+ exit(0);
+}
+
/**
* \brief Start running as a daemon.
freopen("/dev/null", "r", stdin);
freopen("/dev/null", "w", stdout);
freopen("/dev/null", "w", stderr);
+ signal(SIGTERM, graceful_shutdown_watcher);
do {
current_child = fork();
else if (current_child == 0) {
signal(SIGTERM, graceful_shutdown);
- return; /* continue starting citadel. */
+ return; /* continue starting webcit. */
}
else {
pthread_attr_t attr; /**< Thread attributes */
int a, i; /**< General-purpose variables */
char tracefile[PATH_MAX];
- char ip_addr[256];
+ char ip_addr[256]="0.0.0.0";
char dirbuffer[PATH_MAX]="";
int relh=0;
int home=0;
if (running_as_daemon) {
start_daemon(pidfile);
}
+ else {
+ signal(SIGTERM, graceful_shutdown);
+ }
/** Tell 'em who's in da house */
lprintf(1, SERVER "\n");
(dirbuffer[0]!='\0')?"/":"");
basedir=RUNDIR;
COMPUTE_DIRECTORY(socket_dir);
- basedir=DATADIR "/static";
+ basedir=WWWDIR "/static";
COMPUTE_DIRECTORY(static_dir);
- basedir=DATADIR "/static.local";
+ basedir=WWWDIR "/static.local";
COMPUTE_DIRECTORY(static_local_dir);
+
+ snprintf(file_crpt_file_key,
+ sizeof file_crpt_file_key,
+ "%s/citadel.key",
+ ctdl_key_dir);
+ snprintf(file_crpt_file_csr,
+ sizeof file_crpt_file_csr,
+ "%s/citadel.csr",
+ ctdl_key_dir);
+ snprintf(file_crpt_file_cer,
+ sizeof file_crpt_file_cer,
+ "%s/citadel.cer",
+ ctdl_key_dir);
+
/** we should go somewhere we can leave our coredump, if enabled... */
lprintf(9, "Changing directory to %s\n", socket_dir);
if (chdir(webcitdir) != 0) {
* exits if it doesn't succeed.
*/
- if (strlen(uds_listen_path) > 0) {
+ if (!IsEmptyStr(uds_listen_path)) {
lprintf(2, "Attempting to create listener socket at %s...\n", uds_listen_path);
msock = ig_uds_server(uds_listen_path, LISTEN_QUEUE_LENGTH);
}
{
int ssock;
int i = 0;
- int time_to_die = 0;
int fail_this_transaction = 0;
do {
} while (!time_to_die);
+ lprintf (1, "bye");
pthread_exit(NULL);
}