diff options
Diffstat (limited to 'src/miav_daemon.cc')
-rw-r--r-- | src/miav_daemon.cc | 108 |
1 files changed, 0 insertions, 108 deletions
diff --git a/src/miav_daemon.cc b/src/miav_daemon.cc deleted file mode 100644 index 500e92a..0000000 --- a/src/miav_daemon.cc +++ /dev/null @@ -1,108 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/*************************************************************************** - * miav_daemon.cc - * - * Thu Jun 9 11:14:19 CEST 2005 - * Copyright 2005 Bent Bisballe - * deva@aasimon.org - ****************************************************************************/ - -/* - * This file is part of MIaV. - * - * MIaV is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * MIaV is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with MIaV; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. - */ -#include <config.h> -#include "miav_daemon.h" - -#include "info_console.h" -#include "miav_config.h" - -#include "server.h" -#include "socket.h" - -#include <signal.h> -#include <errno.h> - -MiavDaemon::MiavDaemon() -{} - -MiavDaemon::~MiavDaemon() -{} - -int MiavDaemon::daemon_main() -{ - MiavConfig cfg(ETC"/miav.conf", NULL); - InfoConsole info(&cfg); - config = new MiavConfig(ETC"/miav.conf", &info); - - int port = config->readInt("server_port"); - pid_t childpid; // variable to store the child's pid - - signal(SIGCLD, SIG_IGN); // Ved SIGCHILD til IGNORE maa wait/waitpid ikke kaldes - // (ellers kommer der kernel-brok) - - info.info("Starting MIaV server v. %s", VERSION); - info.info("Listening on port %d", port); - Socket *socket = new Socket(port, &info); - - if(socket->hasError()) { - info.error("Listening socket has errors, quitting."); - delete socket; - return 1; - } - - while(1) { - Socket *csocket = new Socket(socket->slisten()); - - if(socket->hasError()) { - info.error("Server socket has errors, quitting."); - delete csocket; - break; - } - - if(csocket->hasError()) { - info.error("Child socket has errors, quitting."); - delete csocket; - break; - } - - if(!csocket->isConnected()) { - info.error("Child socket is not connected, quitting."); - delete csocket; - break; - } - - childpid = fork(); - - switch(childpid) { - case -1: // fork() returns -1 on failure - info.log("Fork error: %s", strerror(errno)); - exit(1); - case 0: // fork() returns 0 to the child process - delete socket; // Close listen socket. - newConnection(csocket, &info); - delete csocket; // Close communication socket. - exit(0); - - default: // fork() returns new pid to the parent process - break; - } - } - - delete socket; - return 0; -} - |