diff options
-rw-r--r-- | include/modules.h | 2 | ||||
-rw-r--r-- | src/configreader.cpp | 14 | ||||
-rw-r--r-- | src/modules.cpp | 2 |
3 files changed, 12 insertions, 6 deletions
diff --git a/include/modules.h b/include/modules.h index a3cac1486..11d194cd8 100644 --- a/include/modules.h +++ b/include/modules.h @@ -438,7 +438,7 @@ class CoreExport Module : public Extensible virtual void OnReadConfig(ServerConfig* config, ConfigReader* coreconf); - virtual int OnDownloadFile(const std::string &filename, std::stringstream &filedata); + virtual int OnDownloadFile(const std::string &filename, std::istringstream* &filedata); /** Returns the version number of a Module. * The method should return a Version object with its version information assigned via diff --git a/src/configreader.cpp b/src/configreader.cpp index 13ef5ddad..ec5f1fe54 100644 --- a/src/configreader.cpp +++ b/src/configreader.cpp @@ -1296,10 +1296,16 @@ void ServerConfig::StartDownloads() ServerInstance->Log(DEBUG,"Module-handled schema for %s", x->first.c_str()); /* For now, error it */ - FileErrors++; - TotalDownloaded++; - delete x->second; - x->second = NULL; + int MOD_RESULT = 0; + FOREACH_RESULT(I_OnDownloadFile, OnDownloadFile(file, reinterpret_cast<std::istringstream*>(x->second))); + if (MOD_RESULT == 0) + { + /* No module claimed this file */ + TotalDownloaded++; + FileErrors++; + delete x->second; + x->second = NULL; + } } } } diff --git a/src/modules.cpp b/src/modules.cpp index d04b0e243..373f1c7b8 100644 --- a/src/modules.cpp +++ b/src/modules.cpp @@ -107,7 +107,7 @@ std::string Event::GetEventID() Module::Module(InspIRCd* Me) : ServerInstance(Me) { } Module::~Module() { } void Module::OnReadConfig(ServerConfig*, ConfigReader*) { } -int Module::OnDownloadFile(const std::string&, std::stringstream&) { return 0; } +int Module::OnDownloadFile(const std::string&, std::istringstream*&) { return 0; } void Module::OnUserConnect(User*) { } void Module::OnUserQuit(User*, const std::string&, const std::string&) { } void Module::OnUserDisconnect(User*) { } |