X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=ircd%2Fm_version.c;h=656332e3a5bdc8e931975ff8166591c73b2fd992;hb=refs%2Fheads%2Fupstream;hp=5d543b068642d6735ea2cb119888fa0468b1771a;hpb=df176da61727ca7ade4c9f928f6a25f9caba4250;p=ircu2.10.12-pk.git diff --git a/ircd/m_version.c b/ircd/m_version.c index 5d543b0..656332e 100644 --- a/ircd/m_version.c +++ b/ircd/m_version.c @@ -79,19 +79,17 @@ * note: it is guaranteed that parv[0]..parv[parc-1] are all * non-NULL pointers. */ -#if 0 -/* - * No need to include handlers.h here the signatures must match - * and we don't need to force a rebuild of all the handlers everytime - * we add a new one to the list. --Bleep - */ -#include "handlers.h" -#endif /* 0 */ +#include "config.h" + #include "client.h" #include "hash.h" #include "ircd.h" +#include "ircd_features.h" +#include "ircd_log.h" #include "ircd_reply.h" +#include "ircd_snprintf.h" #include "ircd_string.h" +#include "match.h" #include "msg.h" #include "numeric.h" #include "numnicks.h" @@ -101,51 +99,32 @@ #include "supported.h" #include "version.h" -#include +/* #include -- Now using assert in ircd_log.h */ /* * m_version - generic message handler * * parv[0] = sender prefix - * parv[1] = remote server + * parv[1] = servername */ int m_version(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) { - struct Client *acptr; - - if (MyConnect(sptr) && parc > 1) - { - if (!(acptr = find_match_server(parv[1]))) - { - sendto_one(sptr, err_str(ERR_NOSUCHSERVER), me.name, parv[0], parv[1]); - return 0; - } - parv[1] = acptr->name; - } - - if (hunt_server(0, cptr, sptr, "%s%s " TOK_VERSION " :%s", 1, parc, parv) == - HUNTED_ISME) - { - char featurebuf[512]; - - sprintf_irc(featurebuf,FEATURES,FEATURESVALUES); - - sendto_one(sptr, rpl_str(RPL_VERSION), - me.name, parv[0], version, debugmode, me.name, serveropts); - sendto_one(sptr, rpl_str(RPL_ISUPPORT), - me.name, parv[0], featurebuf); - } + if (parc > 1 && match(parv[1], cli_name(&me))) + return send_reply(sptr, ERR_NOPRIVILEGES); + send_reply(sptr, RPL_VERSION, version, debugmode, cli_name(&me), + debug_serveropts()); + send_supported(sptr); return 0; } /* - * ms_version - server message handler + * mo_version - oper message handler * * parv[0] = sender prefix - * parv[1] = remote server + * parv[1] = servername */ -int ms_version(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) +int mo_version(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) { struct Client *acptr; @@ -153,36 +132,32 @@ int ms_version(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) { if (!(acptr = find_match_server(parv[1]))) { - sendto_one(sptr, err_str(ERR_NOSUCHSERVER), me.name, parv[0], parv[1]); + send_reply(sptr, ERR_NOSUCHSERVER, parv[1]); return 0; } - parv[1] = acptr->name; + parv[1] = cli_name(acptr); } - if (hunt_server(0, cptr, sptr, "%s%s " TOK_VERSION " :%s", 1, parc, parv) == - HUNTED_ISME) + if (hunt_server_cmd(sptr, CMD_VERSION, cptr, feature_int(FEAT_HIS_REMOTE), + ":%C", 1, + parc, parv) + == HUNTED_ISME) { - char featurebuf[512]; - - sprintf_irc(featurebuf,FEATURES,FEATURESVALUES); - - sendto_one(sptr, rpl_str(RPL_VERSION), - me.name, parv[0], version, debugmode, me.name, serveropts); - sendto_one(sptr, rpl_str(RPL_ISUPPORT), - me.name, parv[0], featurebuf); + send_reply(sptr, RPL_VERSION, version, debugmode, cli_name(&me), + debug_serveropts()); + send_supported(sptr); } return 0; } -#if 0 /* - * m_version + * ms_version - server message handler * * parv[0] = sender prefix - * parv[1] = remote server + * parv[1] = servername */ -int m_version(struct Client *cptr, struct Client *sptr, int parc, char *parv[]) +int ms_version(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) { struct Client *acptr; @@ -190,18 +165,18 @@ int m_version(struct Client *cptr, struct Client *sptr, int parc, char *parv[]) { if (!(acptr = find_match_server(parv[1]))) { - sendto_one(sptr, err_str(ERR_NOSUCHSERVER), me.name, parv[0], parv[1]); + send_reply(sptr, ERR_NOSUCHSERVER, parv[1]); return 0; } - parv[1] = acptr->name; + parv[1] = cli_name(acptr); } - if (hunt_server(0, cptr, sptr, "%s%s " TOK_VERSION " :%s", 1, parc, parv) == + if (hunt_server_cmd(sptr, CMD_VERSION, cptr, 0, ":%C", 1, parc, parv) == HUNTED_ISME) - sendto_one(sptr, rpl_str(RPL_VERSION), - me.name, parv[0], version, debugmode, me.name, serveropts); + { + send_reply(sptr, RPL_VERSION, version, debugmode, cli_name(&me), + debug_serveropts()); + } return 0; } -#endif /* 0 */ -