X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmode.cpp;h=873609d259d363e081b8541ccd57ba1e9c7c2ecb;hb=cfac6a9562764dd1530ed39767630e26934c4685;hp=637eb7ba5c805d30ef01c60d6e0afdc9c33bebc7;hpb=c5d24dd9bd4ce165e5ebdbcd8a58a63d9d4ac999;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/mode.cpp b/src/mode.cpp index 637eb7ba5..873609d25 100644 --- a/src/mode.cpp +++ b/src/mode.cpp @@ -46,7 +46,7 @@ #include "modes/umode_s.h" ModeHandler::ModeHandler(Module* Creator, const std::string& Name, char modeletter, ParamSpec Params, ModeType type) - : ServiceProvider(Creator, Name, type == MODETYPE_CHANNEL ? SERVICE_CMODE : SERVICE_UMODE), m_paramtype(TR_TEXT), + : ServiceProvider(Creator, Name, SERVICE_MODE), m_paramtype(TR_TEXT), parameters_taken(Params), mode(modeletter), prefix(0), oper(false), list(false), m_type(type), levelrequired(HALFOP_VALUE) { @@ -61,8 +61,6 @@ CullResult ModeHandler::cull() ModeHandler::~ModeHandler() { - if (ServerInstance && ServerInstance->Modes && ServerInstance->Modes->FindMode(mode, m_type) == this) - ServerInstance->Logs->Log("MODE", DEFAULT, "ERROR: Destructor for mode %c called while still registered", mode); } bool ModeHandler::IsListMode() @@ -265,6 +263,10 @@ ModeAction ModeParser::TryMode(User* user, User* targetuser, Channel* chan, bool ModeHandler *mh = FindMode(modechar, type); int pcnt = mh->GetNumParams(adding); + // crop mode parameter size to 250 characters + if (parameter.length() > 250 && adding) + parameter = parameter.substr(0, 250); + ModResult MOD_RESULT; FIRST_MOD_RESULT(OnRawMode, MOD_RESULT, (user, chan, modechar, parameter, adding, pcnt));