+2002-04-16 Alex Badea <vampire@p16.pub.ro>
+
+ * ircd/s_user.c (hunt_server_cmd): also send a "no such server"
+ reply if the servername contains a '*' and it doesn't exist
+
+ * include/patchlevel.h (PATCHLEVEL): bump patchlevel
+
+2002-04-16 beware <steendijk@tomaatnet.nl>
+
+ * ircd/m_whois.c: the previous patch broke whois, fixed it
+ another way
+
+ * ircd/m_admin.c: cleaned up m_admin too while we're here,
+ hunt_server_cmd can do all the work for us
+
2002-04-15 Alex Badea <vampire@p16.pub.ro>
* ircd/m_stats.c: added verbose server reporting (/stats v
* $Id$
*
*/
-#define PATCHLEVEL "03"
+#define PATCHLEVEL "04"
#define RELEASE ".12.alpha."
assert(0 != cptr);
assert(cptr == sptr);
- if (parc > 1) {
- struct Client *acptr;
- acptr = FindUser(parv[1]);
- if (acptr)
- parv[1] = cli_name(cli_user(acptr)->server);
- else if (!(acptr = find_match_server(parv[1])))
- return send_reply(sptr, ERR_NOSUCHSERVER, parv[1]);
-
- parv[1] = cli_name(acptr);
- if (hunt_server_cmd(sptr, CMD_ADMIN, cptr, HEAD_IN_SAND_REMOTE, ":%C", 1,
- parc, parv) != HUNTED_ISME)
- return 0;
- }
+ if (hunt_server_cmd(sptr, CMD_ADMIN, cptr, HEAD_IN_SAND_REMOTE, ":%C", 1,
+ parc, parv) != HUNTED_ISME)
+ return 0;
return send_admin_info(sptr);
}
if (parc > 2)
{
- struct Client *acptr;
/* For convenience: Accept a nickname as first parameter, by replacing
* it with the correct servername - as is needed by hunt_server().
* This is the secret behind the /whois nick nick trick.
parv[1] = parv[2];
#endif
- acptr = FindUser(parv[1]);
-
- if (IsOper(sptr) && !(acptr))
- {
- send_reply(sptr, ERR_NOSUCHSERVER, parv[1]);
- return 0;
- }
+ if (hunt_server_cmd(sptr, CMD_WHOIS, cptr, 0, "%C :%s", 1, parc, parv) !=
+ HUNTED_ISME)
+ return 0;
- if (acptr)
- {
- parv[1] = cli_name(cli_user(acptr)->server);
- if (hunt_server_cmd(sptr, CMD_WHOIS, cptr, 0, "%C :%s", 1, parc, parv) !=
- HUNTED_ISME)
- return 0;
- parv[1] = parv[2];
- }
+ parv[1] = parv[2];
}
for (tmp = parv[1]; (nick = ircd_strtok(&p, tmp, ",")); tmp = 0)
* Command can have only max 8 parameters.
*
* server parv[server] is the parameter identifying the
- * target server.
+ * target server. It can be a nickname, servername,
+ * or server mask (from a local user) or a server
+ * numeric (from a remote server).
*
* *WARNING*
* parv[server] is replaced with the pointer to the
if (MyUser(from)) {
/* Make sure it's a server */
if (!strchr(to, '*')) {
- if (0 == (acptr = FindClient(to)))
+ if (0 == (acptr = FindClient(to))) {
+ send_reply(from, ERR_NOSUCHSERVER, to);
return HUNTED_NOSUCH;
+ }
if (cli_user(acptr))
acptr = cli_user(acptr)->server;
if (MyUser(from)) {
/* Make sure it's a server */
if (!strchr(to, '*')) {
- if (0 == (acptr = FindClient(to)))
+ if (0 == (acptr = FindClient(to))) {
+ send_reply(from, ERR_NOSUCHSERVER, to);
return HUNTED_NOSUCH;
+ }
if (cli_user(acptr))
acptr = cli_user(acptr)->server;