+ reason = "Modules incorrectly matched on these servers.";
+ if (diffIneed.length())
+ reason += " Not loaded here:" + diffIneed;
+ if (diffUneed.length())
+ reason += " Not loaded there:" + diffUneed;
+ }
+ this->SendError("CAPAB negotiation failed: "+reason);
+ return false;
+ }
+ 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.";