SslSocket::SslSocket(QObject *parent) : QObject(parent), d(new SslSocketPrivate) { d->socket = new QTcpSocket(this); setupSession(); }
PRIVATE void signal_handler(int sig) { switch (sig) { case SIGINT: case SIGTERM: { dbg_printf(P_INFO2, "SIGTERM/SIGINT caught"); closing = true; break; } case SIGHUP: { if(isRunning || !mySession) { seenHUP = true; } else { auto_handle * s = NULL; dbg_printf(P_MSG, "Caught SIGHUP. Reloading config file."); s = session_init(); if((parse_config_file(s, AutoConfigFile) != 0) || !setupSession(s)) { dbg_printf(P_ERROR, "Error parsing config file. Keeping the old settings."); session_free(s); } seenHUP = false; } break; } } }
int main(int argc, char **argv) { auto_handle * ses = NULL; char *config_file = NULL; char *logfile = NULL; char *pidfile = NULL; char *xmlfile = NULL; char erbuf[100]; NODE *current = NULL; uint32_t count = 0; uint8_t first_run = 1; uint8_t once = 0; uint8_t verbose = AM_DEFAULT_VERBOSE; uint8_t append_log = 0; uint8_t match_only = 0; /* this sets the log level to the default before anything else is done. ** This way, if any outputting happens in readargs(), it'll be printed ** to stderr. */ log_init(NULL, verbose, 0); readargs(argc, argv, &config_file, &logfile, &pidfile, &xmlfile, &nofork, &verbose, &once, &append_log, &match_only); /* reinitialize the logging with the values from the command line */ log_init(logfile, verbose, append_log); dbg_printf(P_MSG, "Automatic version: %s", LONG_VERSION_STRING); if(!config_file) { config_file = am_strdup(AM_DEFAULT_CONFIGFILE); } strncpy(AutoConfigFile, config_file, strlen(config_file)); ses = session_init(); ses->match_only = match_only; if(parse_config_file(ses, AutoConfigFile) != 0) { if(errno == ENOENT) { snprintf(erbuf, sizeof(erbuf), "Cannot find file '%s'", config_file); } else { snprintf(erbuf, sizeof(erbuf), "Unknown error"); } fprintf(stderr, "Error parsing config file: %s\n", erbuf); shutdown_daemon(ses); } if(!setupSession(ses)) { shutdown_daemon(ses); } setup_signals(); if(!nofork) { /* start daemon */ if(daemonize(pidfile) != 0) { dbg_printf(P_ERROR, "Error: Daemonize failed. Aborting..."); shutdown_daemon(mySession); } dbg_printft( P_MSG, "Daemon started"); } dbg_printf(P_INFO, "verbose level: %d", verbose); dbg_printf(P_INFO, "foreground mode: %s", nofork == true ? "yes" : "no"); while(!closing) { isRunning = true; dbg_printft( P_INFO, "------ Checking for new episodes ------"); if(xmlfile && *xmlfile) { processFile(mySession, xmlfile); once = 1; } else { current = mySession->feeds; count = 0; while(current && current->data) { ++count; processFeed(mySession, current->data, first_run); current = current->next; } if(first_run) { dbg_printf(P_INFO2, "New bucket size: %d", mySession->max_bucket_items); } first_run = 0; } /* leave loop when program is only supposed to run once */ if(once) { break; } isRunning = false; if(seenHUP) { signal_handler(SIGHUP); } sleep(mySession->check_interval * 60); } shutdown_daemon(mySession); return 0; }