return;
}
}
- serv->SendPacket("E :Access is denied (no matching link block)",udp_host);
+ char buffer[MAXBUF];
+ sprintf(buffer,"E :Access is denied (no matching link block)");
+ serv->SendPacket(buffer,udp_host);
WriteOpers("CONNECT from %s denied, no matching link block",servername);
return;
}
{
strcpy(servers[j]->description,serverdesc);
DoSync(serv,udp_host);
- Serv->SendPacket("X",udp_host);
+ char buffer[MAXBUF];
+ sprintf(buffer,"X 0");
+ serv->SendPacket(buffer,udp_host);
return;
}
}
log(DEBUG,"Server names '%s' and '%s' don't match",Link_ServerName,servername);
}
}
- serv->SendPacket("E :Access is denied (no matching link block)",udp_host);
+ char buffer[MAXBUF];
+ sprintf(buffer,"E :Access is denied (no matching link block)");
+ serv->SendPacket(buffer,udp_host);
WriteOpers("CONNECT from %s denied, no matching link block",servername);
return;
}
serverrec* source_server = NULL;
- for (int j = 0; j < 255; j++) {
- if (servers[j] != NULL) {
- if (!strcasecmp(servers[j]->name,udp_host)) {
- if (servers[j]->haspassed) {
- // found a valid key for this server, can process restricted stuff here
- process_restricted_commands(token,params,servers[j],serv,udp_host);
+ log(DEBUG,"Begin checking");
+
+ for (int j = 0; j < 255; j++)
+ {
+ log(DEBUG,"Loop %d",j);
+ if (servers[j] != NULL)
+ {
+ log(DEBUG,"Server %d not null",j);
+ for (int x = 0; x < servers[j]->connectors.size(); x++)
+ {
+ log(DEBUG,"Servers are: '%s' '%s'",udp_host,servers[j]->connectors[x].GetServerName().c_str());
+ if (!strcasecmp(servers[j]->connectors[x].GetServerName().c_str(),udp_host))
+ {
+ log(DEBUG,"match! process restricted stuff here");
+ // found a valid ircd_connector.
+ // TODO: Fix this so it only lets servers in that are in the
+ // STATE_CONNECTED state!!!
+ process_restricted_commands(token,params,servers[j],serv,udp_host);
return;
}
}
for (int x = 0; x != UDPportCount; x++)
{
- long theirkey = 0;
- if (me[x]->RecvPacket(udp_msg, udp_host))
+ std::deque<std::string> msgs;
+ msgs.clear();
+ if (me[x]->RecvPacket(msgs, udp_host))
{
- if (strlen(udp_msg)<1) {
- log(DEBUG,"Invalid string from %s [route%d]",udp_host,x);
- }
- else
- {
- FOREACH_MOD OnPacketReceive(udp_msg);
- handle_link_packet(udp_msg, udp_host, me[x]);
+ for (int ctr = 0; ctr < msgs.size(); ctr++)
+ {
+ char udp_msg[MAXBUF];
+ strncpy(udp_msg,msgs[ctr].c_str(),MAXBUF);
+ if (strlen(udp_msg)<1)
+ {
+ log(DEBUG,"Invalid string from %s [route%d]",udp_host,x);
+ break;
+ }
+ FOREACH_MOD OnPacketReceive(udp_msg);
+ handle_link_packet(udp_msg, udp_host, me[x]);
+ }
goto label;
}
}
- }
while (count2 != clientlist.end())