diff options
author | Adam <Adam@anope.org> | 2011-10-09 02:52:13 -0400 |
---|---|---|
committer | Adam <Adam@anope.org> | 2011-10-09 02:52:13 -0400 |
commit | 9f850334a1110a8b976e401af45264dcfc7315c4 (patch) | |
tree | 89dfda632fcc1f0a01d66ea67ea44b8dbfb8144f /src | |
parent | af273e3da537ff60edb5f97b8081b550bd56d57d (diff) |
Give more verbose messages on startup
Diffstat (limited to 'src')
-rw-r--r-- | src/init.cpp | 61 | ||||
-rw-r--r-- | src/logger.cpp | 5 | ||||
-rw-r--r-- | src/main.cpp | 14 | ||||
-rw-r--r-- | src/modulemanager.cpp | 6 | ||||
-rw-r--r-- | src/protocol.cpp | 2 | ||||
-rw-r--r-- | src/servers.cpp | 6 | ||||
-rw-r--r-- | src/socketengines/socketengine_epoll.cpp | 2 | ||||
-rw-r--r-- | src/socketengines/socketengine_kqueue.cpp | 2 | ||||
-rw-r--r-- | src/socketengines/socketengine_poll.cpp | 2 | ||||
-rw-r--r-- | src/socketengines/socketengine_select.cpp | 2 | ||||
-rw-r--r-- | src/sockets.cpp | 2 |
11 files changed, 51 insertions, 53 deletions
diff --git a/src/init.cpp b/src/init.cpp index c4cd62b07..39dbb1c81 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -231,10 +231,35 @@ class SignalNothing : public Signal void OnNotify() { } }; -void Init(int ac, char **av) +bool AtTerm() +{ + return isatty(fileno(stdout)) && isatty(fileno(stdin)) && isatty(fileno(stderr)); +} + +void Fork() { - int started_from_term = isatty(0) && isatty(1) && isatty(2); +#ifndef _WIN32 + int i = fork(); + if (i < 0) + Log(LOG_TERMINAL) << "Unable to fork, " << Anope::LastError(); + else if (i != 0) + exit(0); + + if (isatty(fileno(stdout))) + fclose(stdout); + if (isatty(fileno(stdin))) + fclose(stdin); + if (isatty(fileno(stderr))) + fclose(stderr); + + setpgid(0, 0); +#else + FreeConsole(); +#endif +} +void Init(int ac, char **av) +{ /* Set file creation mask and group ID. */ #if defined(DEFUMASK) && HAVE_UMASK umask(DEFUMASK); @@ -361,36 +386,9 @@ void Init(int ac, char **av) /* Create me */ Me = new Server(NULL, Config->ServerName, 0, Config->ServerDesc, Config->Numeric); -#ifndef _WIN32 - if (!nofork) - { - int i; - if ((i = fork()) < 0) - throw FatalException("Unable to fork"); - else if (i != 0) - { - Log(LOG_TERMINAL) << "PID " << i; - exit(0); - } - - if (started_from_term) - { - close(0); - close(1); - close(2); - } - if (setpgid(0, 0) < 0) - throw FatalException("Unable to setpgid()"); - } -#else +#ifdef _WIN32 if (!SupportedWindowsVersion()) throw FatalException(GetWindowsVersion() + " is not a supported version of Windows"); - if (!nofork) - { - Log(LOG_TERMINAL) << "PID " << GetCurrentProcessId(); - Log() << "Launching Anope into the background"; - FreeConsole(); - } #endif /* Write our PID to the PID file. */ @@ -417,7 +415,8 @@ void Init(int ac, char **av) #endif /* load modules */ - ModuleManager::LoadModuleList(Config->ModulesAutoLoad); + for (std::list<Anope::string>::iterator it = Config->ModulesAutoLoad.begin(), it_end = Config->ModulesAutoLoad.end(); it != it_end; ++it) + ModuleManager::LoadModule(*it, NULL); Module *protocol = ModuleManager::FindFirstOf(PROTOCOL); if (protocol == NULL) diff --git a/src/logger.cpp b/src/logger.cpp index 648a0da5f..d8aed5ee7 100644 --- a/src/logger.cpp +++ b/src/logger.cpp @@ -147,7 +147,10 @@ Log::~Log() else if (nofork && this->Type <= LOG_TERMINAL) std::cout << GetTimeStamp() << " " << this->BuildPrefix() << this->buf.str() << std::endl; else if (this->Type == LOG_TERMINAL) - std::cout << this->BuildPrefix() << this->buf.str() << std::endl; + { + if (AtTerm()) + std::cout << this->BuildPrefix() << this->buf.str() << std::endl; + } for (unsigned i = 0; Config && i < Config->LogInfos.size(); ++i) { LogInfo *l = Config->LogInfos[i]; diff --git a/src/main.cpp b/src/main.cpp index 5d3b5e3de..4d812a322 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -143,13 +143,15 @@ UplinkSocket::~UplinkSocket() Me->SetFlag(SERVER_SYNCING); - if (!quitting) + if (AtTerm()) + quitting = true; + else if (!quitting) { int Retry = Config->RetryWait; if (Retry <= 0) Retry = 60; - Log() << "Retrying in " << Retry << " seconds"; + Log() << "Disconnected, retrying in " << Retry << " seconds"; new ReconnectTimer(Retry); } } @@ -162,14 +164,14 @@ bool UplinkSocket::Read(const Anope::string &buf) void UplinkSocket::OnConnect() { - Log() << "Successfully connected to " << Config->Uplinks[CurrentUplink]->host << ":" << Config->Uplinks[CurrentUplink]->port; + Log(LOG_TERMINAL) << "Successfully connected to " << Config->Uplinks[CurrentUplink]->host << ":" << Config->Uplinks[CurrentUplink]->port; ircdproto->SendConnect(); FOREACH_MOD(I_OnServerConnect, OnServerConnect()); } void UplinkSocket::OnError(const Anope::string &error) { - Log() << "Unable to connect to server " << Config->Uplinks[CurrentUplink]->host << ":" << Config->Uplinks[CurrentUplink]->port << (!error.empty() ? (": " + error) : ""); + Log(LOG_TERMINAL) << "Unable to connect to server " << Config->Uplinks[CurrentUplink]->host << ":" << Config->Uplinks[CurrentUplink]->port << (!error.empty() ? (": " + error) : ""); } static void Connect() @@ -184,7 +186,9 @@ static void Connect() UplinkSock->Bind(Config->LocalHost); FOREACH_MOD(I_OnPreServerConnect, OnPreServerConnect()); DNSQuery rep = DNSManager::BlockingQuery(u->host, u->ipv6 ? DNS_QUERY_AAAA : DNS_QUERY_A); - UplinkSock->Connect(!rep.answers.empty() ? rep.answers.front().rdata : u->host, u->port); + Anope::string reply_ip = !rep.answers.empty() ? rep.answers.front().rdata : u->host; + Log(LOG_TERMINAL) << "Attempting to connect to " << u->host << " (" << reply_ip << "), port " << u->port; + UplinkSock->Connect(reply_ip, u->port); } /*************************************************************************/ diff --git a/src/modulemanager.cpp b/src/modulemanager.cpp index d42bc7d75..978a5b929 100644 --- a/src/modulemanager.cpp +++ b/src/modulemanager.cpp @@ -65,12 +65,6 @@ void ModuleManager::CleanupRuntimeDirectory() #endif } -void ModuleManager::LoadModuleList(std::list<Anope::string> &ModuleList) -{ - for (std::list<Anope::string>::iterator it = ModuleList.begin(), it_end = ModuleList.end(); it != it_end; ++it) - ModuleManager::LoadModule(*it, NULL); -} - /** * Copy the module from the modules folder to the runtime folder. * This will prevent module updates while the modules is loaded from diff --git a/src/protocol.cpp b/src/protocol.cpp index 9ca6c1500..64932632e 100644 --- a/src/protocol.cpp +++ b/src/protocol.cpp @@ -532,7 +532,7 @@ bool IRCdMessage::OnCapab(const Anope::string &, const std::vector<Anope::string bool IRCdMessage::OnError(const Anope::string &, const std::vector<Anope::string> ¶ms) { if (!params.empty()) - Log() << params[0]; + Log(LOG_TERMINAL) << "Error: " << params[0]; return true; } diff --git a/src/servers.cpp b/src/servers.cpp index a912fcf1f..b933a7b6e 100644 --- a/src/servers.cpp +++ b/src/servers.cpp @@ -319,6 +319,12 @@ void Server::Sync(bool SyncLinks) if (c->ci) c->ci->RestoreTopic(); } + + if (!nofork) + { + Log(LOG_TERMINAL) << "Successfully linked, launching into background..."; + Fork(); + } } } diff --git a/src/socketengines/socketengine_epoll.cpp b/src/socketengines/socketengine_epoll.cpp index 07a033f02..927d84100 100644 --- a/src/socketengines/socketengine_epoll.cpp +++ b/src/socketengines/socketengine_epoll.cpp @@ -126,8 +126,6 @@ void SocketEngine::Process() if (ev->events & (EPOLLHUP | EPOLLERR)) { - socklen_t sz = sizeof(errno); - getsockopt(s->GetFD(), SOL_SOCKET, SO_ERROR, &errno, &sz); s->ProcessError(); s->SetFlag(SF_DEAD); delete s; diff --git a/src/socketengines/socketengine_kqueue.cpp b/src/socketengines/socketengine_kqueue.cpp index ef592646f..1c9fe1c2f 100644 --- a/src/socketengines/socketengine_kqueue.cpp +++ b/src/socketengines/socketengine_kqueue.cpp @@ -121,8 +121,6 @@ void SocketEngine::Process() if (event->flags & EV_EOF) { - socklen_t sz = sizeof(errno); - getsockopt(s->GetFD(), SOL_SOCKET, SO_ERROR, &errno, &sz); s->ProcessError(); s->SetFlag(SF_DEAD); delete s; diff --git a/src/socketengines/socketengine_poll.cpp b/src/socketengines/socketengine_poll.cpp index 07e150d84..a174bf828 100644 --- a/src/socketengines/socketengine_poll.cpp +++ b/src/socketengines/socketengine_poll.cpp @@ -144,8 +144,6 @@ void SocketEngine::Process() if (ev->revents & (POLLERR | POLLRDHUP)) { - socklen_t sz = sizeof(errno); - getsockopt(s->GetFD(), SOL_SOCKET, SO_ERROR, &errno, &sz); s->ProcessError(); s->SetFlag(SF_DEAD); delete s; diff --git a/src/socketengines/socketengine_select.cpp b/src/socketengines/socketengine_select.cpp index cd755278e..663cdd9ca 100644 --- a/src/socketengines/socketengine_select.cpp +++ b/src/socketengines/socketengine_select.cpp @@ -103,8 +103,6 @@ void SocketEngine::Process() if (has_error) { - socklen_t sz = sizeof(errno); - getsockopt(s->GetFD(), SOL_SOCKET, SO_ERROR, &errno, &sz); s->ProcessError(); s->SetFlag(SF_DEAD); delete s; diff --git a/src/sockets.cpp b/src/sockets.cpp index 541e3bb3a..91d3eaac0 100644 --- a/src/sockets.cpp +++ b/src/sockets.cpp @@ -372,7 +372,7 @@ SocketFlag SocketIO::FinishConnect(ConnectionSocket *s) else { errno = optval; - s->ProcessError(); + s->OnError(optval ? Anope::LastError() : ""); return SF_DEAD; } } |