ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/branches/8.1.x/modules/core/m_nick.c
(Generate patch)

Comparing ircd-hybrid/branches/8.1.x/modules/core/m_nick.c (file contents):
Revision 2685 by michael, Mon Dec 16 17:37:03 2013 UTC vs.
Revision 2821 by michael, Wed Jan 15 23:12:35 2014 UTC

# Line 1 | Line 1
1   /*
2 < *  ircd-hybrid: an advanced Internet Relay Chat Daemon(ircd).
3 < *  m_nick.c: Sets a users nick.
2 > *  ircd-hybrid: an advanced, lightweight Internet Relay Chat Daemon (ircd)
3   *
4 < *  Copyright (C) 2002 by the past and present ircd coders, and others.
4 > *  Copyright (c) 1997-2014 ircd-hybrid development team
5   *
6   *  This program is free software; you can redistribute it and/or modify
7   *  it under the terms of the GNU General Public License as published by
# Line 18 | Line 17
17   *  along with this program; if not, write to the Free Software
18   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
19   *  USA
20 < *
21 < *  $Id$
20 > */
21 >
22 > /*! \file m_nick.c
23 > * \brief Includes required functions for processing the NICK command.
24 > * \version $Id$
25   */
26  
27   #include "stdinc.h"
# Line 181 | Line 183 | set_initial_nick(struct Client *source_p
183   * inputs       - pointer to server
184   *              - pointer to client
185   *              - nick
186 < * output       -
186 > * output       -
187   * side effects - changes nick of a LOCAL user
188   */
189   static void
# Line 392 | Line 394 | uid_from_server(struct Client *client_p,
394   }
395  
396   static void
397 < perform_nick_collides(struct Client *source_p, struct Client *client_p,
398 <                      struct Client *target_p, int parc, char *parv[],
397 > perform_nick_collides(struct Client *source_p, struct Client *client_p,
398 >                      struct Client *target_p, int parc, char *parv[],
399                        time_t newts, const char *svsid, char *nick, char *gecos, char *uid)
400   {
401    int sameuser = 0;
402 <  
402 >
403    /* Server introducing new nick */
404    if (IsServer(source_p))
405    {
# Line 408 | Line 410 | perform_nick_collides(struct Client *sou
410                             "Nick collision on %s(%s <- %s)(both killed)",
411                             target_p->name, target_p->from->name,
412                             client_p->name);
413 <      
413 >
414        /* if we have a UID, issue a kill for it */
415        if (uid)
416          sendto_one(client_p, ":%s KILL %s :%s (Nick collision (new))",
# Line 429 | Line 431 | perform_nick_collides(struct Client *sou
431      {
432        sameuser = !irccmp(target_p->username, parv[5]) &&
433                   !irccmp(target_p->host, parv[6]);
434 <  
434 >
435        /*
436         * If the users are the same (loaded a client on a different server)
437         * and the new users ts is older, or the users are different and the
# Line 485 | Line 487 | perform_nick_collides(struct Client *sou
487                   "Nick change collision from %s to %s(%s <- %s)(both killed)",
488                   source_p->name, target_p->name, target_p->from->name,
489                   client_p->name);
490 <    
490 >
491        sendto_one(target_p, form_str(ERR_NICKCOLLISION), me.name,
492                   target_p->name, target_p->name);
493  
# Line 580 | Line 582 | perform_nick_collides(struct Client *sou
582   *      - parv[0] = sender prefix
583   *      - parv[1] = nickname
584   */
585 < static void
585 > static int
586   mr_nick(struct Client *client_p, struct Client *source_p,
587          int parc, char *parv[])
588   {
# Line 592 | Line 594 | mr_nick(struct Client *client_p, struct
594    {
595      sendto_one(source_p, form_str(ERR_NONICKNAMEGIVEN), me.name,
596                 source_p->name[0] ? source_p->name : "*");
597 <    return;
597 >    return 0;
598    }
599  
600    /* Copy the nick and terminate it */
# Line 604 | Line 606 | mr_nick(struct Client *client_p, struct
606      sendto_one(source_p, form_str(ERR_ERRONEUSNICKNAME), me.name,
607                 source_p->name[0] ? source_p->name : "*", parv[1],
608                 "Erroneous Nickname");
609 <    return;
609 >    return 0;
610    }
611  
612    /* Check if the nick is resv'd */
# Line 616 | Line 618 | mr_nick(struct Client *client_p, struct
618      sendto_realops_flags(UMODE_REJ, L_ALL, SEND_NOTICE,
619                           "Forbidding reserved nick %s from user %s",
620                           nick, get_client_name(client_p, HIDE_IP));
621 <    return;
621 >    return 0;
622    }
623  
624    if ((target_p = hash_find_client(nick)) == NULL)
# Line 625 | Line 627 | mr_nick(struct Client *client_p, struct
627      strlcpy(source_p->name, nick, sizeof(source_p->name));
628    else
629      sendto_one(source_p, form_str(ERR_NICKNAMEINUSE), me.name, "*", nick);
630 +  return 0;
631   }
632  
633   /*! \brief NICK command handler (called by already registered,
# Line 641 | Line 644 | mr_nick(struct Client *client_p, struct
644   *      - parv[0] = sender prefix
645   *      - parv[1] = nickname
646   */
647 < static void
647 > static int
648   m_nick(struct Client *client_p, struct Client *source_p,
649         int parc, char *parv[])
650   {
# Line 655 | Line 658 | m_nick(struct Client *client_p, struct C
658    {
659      sendto_one(source_p, form_str(ERR_NONICKNAMEGIVEN),
660                 me.name, source_p->name);
661 <    return;
661 >    return 0;
662    }
663  
664    /* mark end of grace period, to prevent nickflooding */
# Line 670 | Line 673 | m_nick(struct Client *client_p, struct C
673    {
674      sendto_one(source_p, form_str(ERR_ERRONEUSNICKNAME), me.name,
675                 source_p->name, nick, "Erroneous Nickname");
676 <    return;
676 >    return 0;
677    }
678  
679    if (!IsExemptResv(source_p) &&
# Line 683 | Line 686 | m_nick(struct Client *client_p, struct C
686      sendto_realops_flags(UMODE_REJ, L_ALL, SEND_NOTICE,
687                           "Forbidding reserved nick %s from user %s",
688                           nick, get_client_name(client_p, HIDE_IP));
689 <    return;
689 >    return 0;
690    }
691  
692    if ((target_p = hash_find_client(nick)) == NULL)
# Line 711 | Line 714 | m_nick(struct Client *client_p, struct C
714    else
715      sendto_one(source_p, form_str(ERR_NICKNAMEINUSE), me.name,
716                 source_p->name, nick);
717 +  return 0;
718   }
719  
720   /*! \brief NICK command handler (called by servers and remotely
# Line 753 | Line 757 | m_nick(struct Client *client_p, struct C
757   *  - parv[8] = services id (timestamp)
758   *  - parv[9] = ircname
759   */
760 < static void
760 > static int
761   ms_nick(struct Client *client_p, struct Client *source_p,
762          int parc, char *parv[])
763   {
# Line 762 | Line 766 | ms_nick(struct Client *client_p, struct
766    const char *svsid = "0";
767  
768    if (parc < 3 || EmptyString(parv[parc - 1]))
769 <    return;
769 >    return 0;
770  
771    if (parc >= 9)
772    {
# Line 775 | Line 779 | ms_nick(struct Client *client_p, struct
779                             parv[7], source_p->name, parv[1]);
780        sendto_one(client_p, ":%s KILL %s :%s (Server doesn't exist!)",
781                   me.name, parv[1], me.name);
782 <      return;
782 >      return 0;
783      }
784  
785      if (check_clean_nick(client_p, source_p, parv[1], server_p) ||
786          check_clean_user(client_p, parv[1], parv[5], server_p) ||
787          check_clean_host(client_p, parv[1], parv[6], server_p))
788 <      return;
788 >      return 0;
789  
790      if (IsServer(source_p))
791        newts = atol(parv[3]);
# Line 792 | Line 796 | ms_nick(struct Client *client_p, struct
796    {
797      if (IsServer(source_p))
798        /* Servers can't change nicks.. */
799 <      return;
799 >      return 0;
800  
801      if (check_clean_nick(client_p, source_p, parv[1],
802                           source_p->servptr))
803 <      return;
803 >      return 0;
804  
805      newts = atol(parv[2]);
806    }
# Line 818 | Line 822 | ms_nick(struct Client *client_p, struct
822    else
823      perform_nick_collides(source_p, client_p, target_p, parc, parv,
824                            newts, svsid, parv[1], parv[parc-1], NULL);
825 +  return 0;
826   }
827  
828   /*! \brief UID command handler (called by servers)
# Line 856 | Line 861 | ms_nick(struct Client *client_p, struct
861   *  - parv[ 9] = services id (timestamp)
862   *  - parv[10] = ircname (gecos)
863   */
864 < static void
864 > static int
865   ms_uid(struct Client *client_p, struct Client *source_p,
866         int parc, char *parv[])
867   {
# Line 865 | Line 870 | ms_uid(struct Client *client_p, struct C
870    const char *svsid = "0";
871  
872    if (parc < 10 || EmptyString(parv[parc-1]))
873 <    return;
873 >    return 0;
874  
875    if (check_clean_nick(client_p, source_p, parv[1], source_p) ||
876        check_clean_user(client_p,  parv[1], parv[5], source_p) ||
877        check_clean_host(client_p,  parv[1], parv[6], source_p))
878 <    return;
878 >    return 0;
879  
880    newts = atol(parv[3]);
881    svsid = parc == 11 ? parv[9] : "0";
# Line 892 | Line 897 | ms_uid(struct Client *client_p, struct C
897      ++ServerStats.is_kill;
898      AddFlag(target_p, FLAGS_KILLED);
899      exit_client(target_p, &me, "ID Collision");
900 <    return;
900 >    return 0;
901    }
902  
903    if ((target_p = hash_find_client(parv[1])) == NULL)
# Line 905 | Line 910 | ms_uid(struct Client *client_p, struct C
910    else
911      perform_nick_collides(source_p, client_p, target_p, parc, parv, newts, svsid, parv[1],
912                            parv[parc-1], parv[8]);
913 +  return 0;
914   }
915  
916 < static struct Message nick_msgtab = {
916 > static struct Message nick_msgtab =
917 > {
918    "NICK", 0, 0, 0, MAXPARA, MFLG_SLOW, 0,
919 <  {mr_nick, m_nick, ms_nick, m_ignore, m_nick, m_ignore}
919 >  { mr_nick, m_nick, ms_nick, m_ignore, m_nick, m_ignore }
920   };
921  
922 < static struct Message uid_msgtab = {
922 > static struct Message uid_msgtab =
923 > {
924    "UID", 0, 0, 10, MAXPARA, MFLG_SLOW, 0,
925 <  {m_ignore, m_ignore, ms_uid, m_ignore, m_ignore, m_ignore}
925 >  { m_ignore, m_ignore, ms_uid, m_ignore, m_ignore, m_ignore }
926   };
927  
928   static void
# Line 931 | Line 939 | module_exit(void)
939    mod_del_cmd(&nick_msgtab);
940   }
941  
942 < struct module module_entry = {
942 > struct module module_entry =
943 > {
944    .node    = { NULL, NULL, NULL },
945    .name    = NULL,
946    .version = "$Revision$",

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines