- bool have_this_server = false;
- for (int j = 0; j < 32; j++)
- {
- if (me[j] != NULL)
- {
- for (int x = 0; x < me[j]->connectors.size(); x++)
- {
- if (!strcasecmp(me[j]->connectors[x].GetServerName().c_str(),parameters[0]))
- {
- // found a valid ircd_connector.
- have_this_server = true;
- return;
- }
- }
- }
- }
- if (have_this_server)
- {
- WriteOpers("SQUIT command issued by %s to remove %s from the mesh",user->nick,parameters[0]);
- char buffer[MAXBUF];
- snprintf(buffer,MAXBUF,"& %s",parameters[0]);
- NetSendToAll(buffer);
- DoSplit(parameters[0]);
+ bool have_this_server = true;
+ int n_count = 0;
+ std::string server_to_squit = "";
+ while (have_this_server)
+ {
+ have_this_server = false;
+ for (int j = 0; j < 32; j++)
+ {
+ if (me[j] != NULL)
+ {
+ for (int x = 0; x < me[j]->connectors.size(); x++)
+ {
+ if (match(me[j]->connectors[x].GetServerName().c_str(),parameters[0]))
+ {
+ // found a valid ircd_connector.
+ have_this_server = true;
+ server_to_squit = me[j]->connectors[x].GetServerName().c_str();
+ break;
+ }
+ }
+ }
+ }
+ if (have_this_server)
+ {
+ WriteOpers("SQUIT command issued by %s to remove %s from the mesh",user->nick,server_to_squit.c_str());
+ WriteServ(user->fd,"NOTICE %s :*** Removing remote server %s.",user->nick,server_to_squit.c_str());
+ char buffer[MAXBUF];
+ snprintf(buffer,MAXBUF,"& %s",server_to_squit.c_str());
+ NetSendToAll(buffer);
+ DoSplit(server_to_squit.c_str());
+ n_count++;
+ }