summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2011-10-09 02:52:13 -0400
committerAdam <Adam@anope.org>2011-10-09 02:52:13 -0400
commit9f850334a1110a8b976e401af45264dcfc7315c4 (patch)
tree89dfda632fcc1f0a01d66ea67ea44b8dbfb8144f /src
parentaf273e3da537ff60edb5f97b8081b550bd56d57d (diff)
Give more verbose messages on startup
Diffstat (limited to 'src')
-rw-r--r--src/init.cpp61
-rw-r--r--src/logger.cpp5
-rw-r--r--src/main.cpp14
-rw-r--r--src/modulemanager.cpp6
-rw-r--r--src/protocol.cpp2
-rw-r--r--src/servers.cpp6
-rw-r--r--src/socketengines/socketengine_epoll.cpp2
-rw-r--r--src/socketengines/socketengine_kqueue.cpp2
-rw-r--r--src/socketengines/socketengine_poll.cpp2
-rw-r--r--src/socketengines/socketengine_select.cpp2
-rw-r--r--src/sockets.cpp2
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> &params)
{
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;
}
}