Move check for required CAPABs to mr_server -- CAPAB may not be sent.

Also fix exit message.
This commit is contained in:
Jilles Tjoelker 2009-04-21 18:43:07 +02:00
parent fde16193c4
commit 031c4b89d3
2 changed files with 18 additions and 17 deletions

View File

@ -75,6 +75,7 @@ mr_server(struct Client *client_p, struct Client *source_p, int parc, const char
const char *name;
struct Client *target_p;
int hop;
struct Capability *cap;
name = parv[1];
hop = atoi(parv[2]);
@ -108,6 +109,23 @@ mr_server(struct Client *client_p, struct Client *source_p, int parc, const char
return 0;
}
/* check to ensure any "required" caps are set. --nenolod */
for (cap = captab; cap->name; cap++)
{
if (!cap->required)
continue;
if (!(client_p->localClient->caps & cap->cap))
{
char exitbuf[BUFSIZE];
rb_snprintf(exitbuf, BUFSIZE, "Missing required CAPAB [%s]", cap->name);
exit_client(client_p, client_p, client_p, exitbuf);
return 0;
}
}
/* Now we just have to call check_server and everything should be
* check for us... -A1kmm. */
switch (check_server(name, client_p))

View File

@ -96,23 +96,6 @@ mr_capab(struct Client *client_p, struct Client *source_p, int parc, const char
}
}
/* check to ensure any "required" caps are set. --nenolod */
for (cap = captab; cap->name; cap++)
{
if (!cap->required)
continue;
if (!(client_p->localClient->caps & cap->cap))
{
char exitbuf[BUFSIZE];
rb_snprintf(exitbuf, BUFSIZE, "Missing required CAPAB [%s]", cap->cap);
exit_client(client_p, client_p, client_p, exitbuf);
return 0;
}
}
return 0;
}