+ for (ModuleManager::ModuleMap::const_iterator i = modlist.begin(); i != modlist.end(); ++i)
+ {
+ Module* const mod = i->second;
+ // 3.0 advertises its settings for the benefit of services
+ // 2.0 would bork on this
+ if (proto_version < 1205 && i->second->ModuleSourceFile == "m_kicknorejoin.so")
+ continue;
+
+ bool do_compat_include = false;
+ if (proto_version < 1205)
+ {
+ for (size_t j = 0; j < sizeof(compatmods)/sizeof(compatmods[0]); j++)
+ {
+ if ((compatmods[j].listflag & filter) && (mod->ModuleSourceFile == compatmods[j].name))
+ {
+ do_compat_include = true;
+ break;
+ }
+ }
+ }
+
+ Version v = i->second->GetVersion();
+ if ((!do_compat_include) && (!(v.Flags & filter)))
+ continue;
+
+ if (i != modlist.begin())
+ capabilities.push_back(' ');
+ capabilities.append(i->first);
+ if (!v.link_data.empty())
+ {
+ capabilities.push_back('=');
+ capabilities.append(v.link_data);
+ }
+ }
+
+ // If we are linked in a 2.0 server and have an ascii casemapping
+ // advertise it as m_ascii.so from inspircd-extras
+ if ((filter & VF_COMMON) && ServerInstance->Config->CaseMapping == "ascii" && proto_version == 1202)