diff options
-rw-r--r-- | include/modules/os_session.h | 2 | ||||
-rw-r--r-- | modules/commands/os_session.cpp | 5 | ||||
-rw-r--r-- | modules/database/db_old.cpp | 10 |
3 files changed, 12 insertions, 5 deletions
diff --git a/include/modules/os_session.h b/include/modules/os_session.h index 31f02cf9d..65f1c6f75 100644 --- a/include/modules/os_session.h +++ b/include/modules/os_session.h @@ -32,6 +32,8 @@ class SessionService : public Service SessionService(Module *m) : Service(m, "SessionService", "session") { } + virtual Exception *CreateException() = 0; + virtual void AddException(Exception *e) = 0; virtual void DelException(Exception *e) = 0; diff --git a/modules/commands/os_session.cpp b/modules/commands/os_session.cpp index be003900d..8e210d5da 100644 --- a/modules/commands/os_session.cpp +++ b/modules/commands/os_session.cpp @@ -42,6 +42,11 @@ class MySessionService : public SessionService public: MySessionService(Module *m) : SessionService(m), Exceptions("Exception") { } + Exception *CreateException() anope_override + { + return new Exception(); + } + void AddException(Exception *e) anope_override { this->Exceptions->push_back(e); diff --git a/modules/database/db_old.cpp b/modules/database/db_old.cpp index 37405e308..c017eb681 100644 --- a/modules/database/db_old.cpp +++ b/modules/database/db_old.cpp @@ -1070,6 +1070,9 @@ static void LoadOper() static void LoadExceptions() { + if (!session_service) + return; + dbFILE *f = open_db_read("OperServ", "exception.db", 9); if (f == NULL) return; @@ -1090,17 +1093,14 @@ static void LoadExceptions() READ(read_int32(&time, f)); READ(read_int32(&expires, f)); - Exception *exception = new Exception(); + Exception *exception = session_service->CreateException(); exception->mask = mask; exception->limit = limit; exception->who = who; exception->time = time; exception->expires = expires; exception->reason = reason; - if (session_service) - session_service->AddException(exception); - else - delete exception; + session_service->AddException(exception); } close_db(f); |