X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=ircd%2Fm_invite.c;h=2479753dd5f152f304cf6777d168b063c979ae68;hb=a36ad5e29241b0c89379947b13887cb6930ef3e0;hp=fff07191bfe1cbda0ab9548b9236972667d76fb8;hpb=3107a4e1b492c341456a7d46a37265daca285e92;p=ircu2.10.12-pk.git diff --git a/ircd/m_invite.c b/ircd/m_invite.c index fff0719..2479753 100644 --- a/ircd/m_invite.c +++ b/ircd/m_invite.c @@ -142,13 +142,10 @@ int m_invite(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) if (is_silenced(sptr, acptr)) return 0; - clean_channelname(parv[2]); - - if (!IsChannelPrefix(*parv[2])) - return 0; - - if (!(chptr = FindChannel(parv[2]))) { - send_reply(sptr, ERR_NOTONCHANNEL, parv[2]); + if (!IsChannelName(parv[2]) + || !strIsIrcCh(parv[2]) + || !(chptr = FindChannel(parv[2]))) { + send_reply(sptr, ERR_NOSUCHCHANNEL, parv[2]); return 0; } @@ -177,24 +174,26 @@ int m_invite(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) if (cli_user(acptr)->away) send_reply(sptr, RPL_AWAY, cli_name(acptr), cli_user(acptr)->away); - if (MyConnect(acptr)) + if (MyConnect(acptr)) { add_invite(acptr, chptr); + sendcmdto_one(sptr, CMD_INVITE, acptr, "%s %H", cli_name(acptr), chptr); + } else if (!IsLocalChannel(chptr->chname)) { + sendcmdto_one(sptr, CMD_INVITE, acptr, "%s %H %Tu", cli_name(acptr), chptr, + chptr->creationtime); + } if (!IsLocalChannel(chptr->chname) || MyConnect(acptr)) { if (feature_bool(FEAT_ANNOUNCE_INVITES)) { /* Announce to channel operators. */ - sendcmdto_channel_butserv_butone(&me, get_error_numeric(RPL_ISSUEDINVITE)->str, - NULL, chptr, sptr, SKIP_NONOPS, + sendcmdto_channel_butserv_butone(&his, get_error_numeric(RPL_ISSUEDINVITE)->str, + NULL, chptr, sptr, SKIP_NONOPS, "%H %C %C :%C has been invited by %C", chptr, acptr, sptr, acptr, sptr); - /* Announce to servers with channel operators, but skip acptr, - * since they will be notified below. */ + /* Announce to servers with channel operators. */ sendcmdto_channel_servers_butone(sptr, NULL, TOK_INVITE, chptr, acptr, SKIP_NONOPS, "%s %H %Tu", cli_name(acptr), chptr, chptr->creationtime); } - sendcmdto_one(sptr, CMD_INVITE, acptr, "%s %H %Tu", cli_name(acptr), - chptr, chptr->creationtime); } return 0; @@ -253,7 +252,7 @@ int ms_invite(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) if (!(chptr = FindChannel(parv[2]))) { /* - * allow invites to non existant channels, bleah + * allow invites to non existent channels, bleah * avoid JOIN, INVITE, PART abuse */ sendcmdto_one(sptr, CMD_INVITE, acptr, "%C :%s", acptr, parv[2]); @@ -280,26 +279,25 @@ int ms_invite(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) if (is_silenced(sptr, acptr)) return 0; - if (MyConnect(acptr)) - add_invite(acptr, chptr); + if (MyConnect(acptr)) { + add_invite(acptr, chptr); + sendcmdto_one(sptr, CMD_INVITE, acptr, "%s %H", cli_name(acptr), chptr); + } else { + sendcmdto_one(sptr, CMD_INVITE, acptr, "%s %H %Tu", cli_name(acptr), chptr, + chptr->creationtime); + } if (feature_bool(FEAT_ANNOUNCE_INVITES)) { /* Announce to channel operators. */ - sendcmdto_channel_butserv_butone(&me, get_error_numeric(RPL_ISSUEDINVITE)->str, + sendcmdto_channel_butserv_butone(&his, get_error_numeric(RPL_ISSUEDINVITE)->str, NULL, chptr, sptr, SKIP_NONOPS, "%H %C %C :%C has been invited by %C", chptr, acptr, sptr, acptr, sptr); - /* Announce to servers with channel operators, but skip acptr, - * since they will be notified below. */ + /* Announce to servers with channel operators. */ sendcmdto_channel_servers_butone(sptr, NULL, TOK_INVITE, chptr, acptr, SKIP_NONOPS, "%s %H %Tu", cli_name(acptr), chptr, chptr->creationtime); } - sendcmdto_one(sptr, CMD_INVITE, acptr, - "%s %H %Tu", - cli_name(acptr), chptr, chptr->creationtime); return 0; } - -