- if (((this->CapKeys.find("IP6SUPPORT") == this->CapKeys.end()) && (ip6support)) || ((this->CapKeys.find("IP6SUPPORT") != this->CapKeys.end()) && (this->CapKeys.find("IP6SUPPORT")->second != ConvToStr(ip6support))))
- reason = "We don't both support linking to IPV6 servers";
- if (((this->CapKeys.find("IP6NATIVE") != this->CapKeys.end()) && (this->CapKeys.find("IP6NATIVE")->second == "1")) && (!ip6support))
- reason = "The remote server is IPV6 native, and we don't support linking to IPV6 servers";
+ if (this->OptModuleList != this->MyModules(VF_OPTCOMMON) && this->OptModuleList.length())
+ {
+ std::string diffIneed = ListDifference(this->OptModuleList, this->MyModules(VF_OPTCOMMON));
+ std::string diffUneed = ListDifference(this->MyModules(VF_OPTCOMMON), this->OptModuleList);
+ if (diffIneed.length() == 0 && diffUneed.length() == 0)
+ {
+ reason = "Optional Module list in CAPAB is not alphabetically ordered, cannot compare lists.";
+ }
+ else
+ {
+ ServerInstance->SNO->WriteToSnoMask('l',
+ "Optional module lists do not match, some commands may not work globally.%s%s%s%s",
+ diffIneed.length() ? " Not loaded here:" : "", diffIneed.c_str(),
+ diffUneed.length() ? " Not loaded there:" : "", diffUneed.c_str());
+ }
+ }
+