From 7dadb07a19280936147b91144f27d8528ba35c7c Mon Sep 17 00:00:00 2001 From: brain Date: Wed, 2 Apr 2008 19:52:33 +0000 Subject: Fix peavey and w00ts bug they found by removing the nonblocking part of the logger. This stuff was hackish and isnt required. If your hard disk locks up, then you have bigger worries. git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@9276 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/logger.cpp | 59 +++------------------------------------------------------- 1 file changed, 3 insertions(+), 56 deletions(-) (limited to 'src/logger.cpp') diff --git a/src/logger.cpp b/src/logger.cpp index 20235a826..8e887830d 100644 --- a/src/logger.cpp +++ b/src/logger.cpp @@ -333,57 +333,17 @@ void LogManager::Log(const std::string &type, int loglevel, const std::string &m FileWriter::FileWriter(InspIRCd* Instance, FILE* logfile) : ServerInstance(Instance), log(logfile), writeops(0) { - if (log) - { - Instance->SE->NonBlocking(fileno(log)); - SetFd(fileno(log)); - buffer.clear(); - } } -bool FileWriter::Readable() +void FileWriter::HandleEvent(EventType ev, int) { - return false; -} - -void FileWriter::HandleEvent(EventType, int) -{ - WriteLogLine(""); - if (log) - { - ServerInstance->SE->DelFd(this); - } } void FileWriter::WriteLogLine(const std::string &line) { - if (line.length()) - { - buffer.append(line); - } - if (log) { - int written = fprintf(log,"%s",buffer.c_str()); -#ifdef WINDOWS - buffer.clear(); -#else - if ((written >= 0) && (written < (int)buffer.length())) - { - buffer.erase(0, buffer.length()); - ServerInstance->SE->AddFd(this); - } - else if (written == -1) - { - if (errno == EAGAIN) - ServerInstance->SE->AddFd(this); - } - else - { - /* Wrote the whole buffer, and no need for write callback */ - buffer.clear(); - } -#endif + fprintf(log,"%s",line.c_str()); if (writeops++ % 20) { fflush(log); @@ -395,25 +355,12 @@ void FileWriter::Close() { if (log) { - ServerInstance->SE->Blocking(fileno(log)); - - if (buffer.size()) - { - fprintf(log,"%s",buffer.c_str()); - } - -#ifndef WINDOWS - ServerInstance->SE->DelFd(this); -#endif - fflush(log); fclose(log); } - - buffer.clear(); } FileWriter::~FileWriter() { - this->Close(); } + -- cgit v1.3.1-10-gc9f91