mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-20 10:12:15 +01:00
add in basic support for pidfiles
(patch courtesy aaron turner) svn:r565
This commit is contained in:
parent
8b80362c76
commit
746d64e631
@ -153,6 +153,7 @@ static void config_assign(or_options_t *options, struct config_line *list) {
|
||||
config_compare(list, "LogLevel", CONFIG_TYPE_STRING, &options->LogLevel) ||
|
||||
config_compare(list, "DataDirectory", CONFIG_TYPE_STRING, &options->DataDirectory) ||
|
||||
config_compare(list, "RouterFile", CONFIG_TYPE_STRING, &options->RouterFile) ||
|
||||
config_compare(list, "PidFile", CONFIG_TYPE_STRING, &options->PidFile) ||
|
||||
config_compare(list, "Nickname", CONFIG_TYPE_STRING, &options->Nickname) ||
|
||||
config_compare(list, "Address", CONFIG_TYPE_STRING, &options->Address) ||
|
||||
config_compare(list, "ExitPolicy", CONFIG_TYPE_STRING, &options->ExitPolicy) ||
|
||||
@ -201,6 +202,7 @@ int getconfig(int argc, char **argv, or_options_t *options) {
|
||||
options->LogLevel = "info";
|
||||
options->ExitPolicy = "reject 127.0.0.1:*,reject 18.244.0.188:25,accept *:*";
|
||||
options->loglevel = LOG_DEBUG;
|
||||
options->PidFile = "tor.pid";
|
||||
options->DataDirectory = NULL;
|
||||
options->CoinWeight = 0.1;
|
||||
options->MaxConn = 900;
|
||||
|
@ -637,6 +637,9 @@ static void catch(int the_signal) {
|
||||
case SIGTERM:
|
||||
case SIGINT:
|
||||
log(LOG_ERR,"Catching signal %d, exiting cleanly.", the_signal);
|
||||
/* we don't care if there was an error when we unlink,
|
||||
nothing we could do about it anyways */
|
||||
unlink(options.PidFile);
|
||||
exit(0);
|
||||
case SIGHUP:
|
||||
please_reset = 1;
|
||||
@ -724,6 +727,18 @@ void daemonize(void) {
|
||||
#endif
|
||||
}
|
||||
|
||||
void write_pidfile(char *filename) {
|
||||
FILE *pidfile;
|
||||
|
||||
if ((pidfile = fopen(filename, "w")) == NULL) {
|
||||
log_fn(LOG_WARNING, "unable to open %s for writing: %s", filename,
|
||||
strerror(errno));
|
||||
} else {
|
||||
fprintf(pidfile, "%d", getpid());
|
||||
fclose(pidfile);
|
||||
}
|
||||
}
|
||||
|
||||
int tor_main(int argc, char *argv[]) {
|
||||
|
||||
if(getconfig(argc,argv,&options)) {
|
||||
@ -734,6 +749,9 @@ int tor_main(int argc, char *argv[]) {
|
||||
global_read_bucket = options.TotalBandwidth; /* start it at 1 second of traffic */
|
||||
stats_prev_global_read_bucket = global_read_bucket;
|
||||
|
||||
/* write our pid to the pid file */
|
||||
write_pidfile(options.PidFile);
|
||||
|
||||
if(options.Daemon)
|
||||
daemonize();
|
||||
|
||||
|
@ -421,6 +421,7 @@ typedef struct {
|
||||
char *RouterFile;
|
||||
char *Nickname;
|
||||
char *Address;
|
||||
char *PidFile;
|
||||
char *ExitPolicy;
|
||||
double CoinWeight;
|
||||
int Daemon;
|
||||
|
Loading…
Reference in New Issue
Block a user