]> jfr.im git - solanum.git/blobdiff - ircd/client.c
Remove another silly outdated comment [ci skip]
[solanum.git] / ircd / client.c
index 39d4ea4d839e7d29d5b0568a6f0e3ea6143d5e3d..3580c88de43d25cc84792d463ea59bafb7e054fe 100644 (file)
@@ -21,8 +21,6 @@
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
  *  USA
- *
- *  $Id: client.c 3514 2007-06-06 16:25:21Z nenolod $
  */
 #include "stdinc.h"
 #include "config.h"
@@ -53,7 +51,7 @@
 #include "blacklist.h"
 #include "reject.h"
 #include "scache.h"
-#include "irc_dictionary.h"
+#include "rb_dictionary.h"
 #include "sslproc.h"
 #include "s_assert.h"
 
@@ -129,7 +127,7 @@ init_client(void)
        rb_event_addish("exit_aborted_clients", exit_aborted_clients, NULL, 1);
        rb_event_add("flood_recalc", flood_recalc, NULL, 1);
 
-       nd_dict = irc_dictionary_create(irccmp);
+       nd_dict = rb_dictionary_create("nickdelay", irccmp);
 }
 
 
@@ -350,7 +348,7 @@ check_pings_list(rb_dlink_list * list)
                                             "No response from %s, closing link",
                                             log_client_name(client_p, HIDE_IP));
                                }
-                               (void) rb_snprintf(scratch, sizeof(scratch),
+                               (void) snprintf(scratch, sizeof(scratch),
                                                  "Ping timeout: %d seconds",
                                                  (int) (rb_current_time() - client_p->localClient->lasttime));
 
@@ -672,7 +670,7 @@ resv_nick_fnc(const char *mask, const char *reason, int temp_time)
 
                        /* Do all of the nick-changing gymnastics. */
                        client_p->tsinfo = rb_current_time();
-                       add_history(client_p, 1);
+                       whowas_add_history(client_p, 1);
 
                        monitor_signoff(client_p);
 
@@ -696,7 +694,7 @@ resv_nick_fnc(const char *mask, const char *reason, int temp_time)
                                rb_dlinkDestroy(ptr, &client_p->on_allow_list);
                        }
 
-                       rb_snprintf(note, sizeof(note), "Nick: %s", nick);
+                       snprintf(note, sizeof(note), "Nick: %s", nick);
                        rb_note(client_p->localClient->F, note);
                }
        }
@@ -872,7 +870,7 @@ find_chasing(struct Client *source_p, const char *user, int *chasing)
        if(who || IsDigit(*user))
                return who;
 
-       if(!(who = get_history(user, (long) KILLCHASETIMELIMIT)))
+       if(!(who = whowas_get_history(user, (long) KILLCHASETIMELIMIT)))
        {
                sendto_one_numeric(source_p, ERR_NOSUCHNICK,
                                   form_str(ERR_NOSUCHNICK), user);
@@ -926,16 +924,16 @@ get_client_name(struct Client *client, int showip)
                switch (showip)
                {
                case SHOW_IP:
-                       rb_snprintf(nbuf, sizeof(nbuf), "%s[%s@%s]",
+                       snprintf(nbuf, sizeof(nbuf), "%s[%s@%s]",
                                   client->name, client->username,
                                   client->sockhost);
                        break;
                case MASK_IP:
-                       rb_snprintf(nbuf, sizeof(nbuf), "%s[%s@255.255.255.255]",
+                       snprintf(nbuf, sizeof(nbuf), "%s[%s@255.255.255.255]",
                                   client->name, client->username);
                        break;
                default:
-                       rb_snprintf(nbuf, sizeof(nbuf), "%s[%s@%s]",
+                       snprintf(nbuf, sizeof(nbuf), "%s[%s@%s]",
                                   client->name, client->username, client->host);
                }
                return nbuf;
@@ -968,12 +966,12 @@ log_client_name(struct Client *target_p, int showip)
                switch (showip)
                {
                case SHOW_IP:
-                       rb_snprintf(nbuf, sizeof(nbuf), "%s[%s@%s]", target_p->name,
+                       snprintf(nbuf, sizeof(nbuf), "%s[%s@%s]", target_p->name,
                                   target_p->username, target_p->sockhost);
                        break;
 
                default:
-                       rb_snprintf(nbuf, sizeof(nbuf), "%s[%s@%s]", target_p->name,
+                       snprintf(nbuf, sizeof(nbuf), "%s[%s@%s]", target_p->name,
                                   target_p->username, target_p->host);
                }
 
@@ -1073,7 +1071,7 @@ free_exited_clients(void *unused)
 ** already been sent.  we make sure to exit a server's dependent clients
 ** and servers before the server itself; exit_one_client takes care of
 ** actually removing things off llists.   tweaked from +CSr31  -orabidoo
-*/
+ */
 /*
  * added sanity test code.... source_p->serv might be NULL...
  */
@@ -1126,7 +1124,7 @@ recurse_remove_clients(struct Client *source_p, const char *comment)
 ** Remove *everything* that depends on source_p, from all lists, and sending
 ** all necessary SQUITs.  source_p itself is still on the lists,
 ** and its SQUITs have been sent except for the upstream one  -orabidoo
-*/
+ */
 static void
 remove_dependents(struct Client *client_p,
                  struct Client *source_p,
@@ -1193,7 +1191,6 @@ exit_aborted_clients(void *unused)
 
 /*
  * dead_link - Adds client to a list of clients that need an exit_client()
- *
  */
 void
 dead_link(struct Client *client_p, int sendqex)
@@ -1209,7 +1206,7 @@ dead_link(struct Client *client_p, int sendqex)
        if(sendqex)
                rb_strlcpy(abt->notice, "Max SendQ exceeded", sizeof(abt->notice));
        else
-               rb_snprintf(abt->notice, sizeof(abt->notice), "Write error: %s", strerror(errno));
+               snprintf(abt->notice, sizeof(abt->notice), "Write error: %s", strerror(errno));
 
        abt->client = client_p;
        SetIOError(client_p);
@@ -1247,8 +1244,8 @@ exit_generic_client(struct Client *client_p, struct Client *source_p, struct Cli
        /* Clean up allow lists */
        del_all_accepts(source_p);
 
-       add_history(source_p, 0);
-       off_history(source_p);
+       whowas_add_history(source_p, 0);
+       whowas_off_history(source_p);
 
        monitor_signoff(source_p);
 
@@ -1339,7 +1336,7 @@ exit_remote_server(struct Client *client_p, struct Client *source_p, struct Clie
                strcat(comment1, source_p->name);
        }
        if (IsPerson(from))
-               rb_snprintf(newcomment, sizeof(newcomment), "by %s: %s",
+               snprintf(newcomment, sizeof(newcomment), "by %s: %s",
                                from->name, comment);
 
        if(source_p->serv != NULL)
@@ -1417,7 +1414,7 @@ exit_local_server(struct Client *client_p, struct Client *source_p, struct Clien
        /* Always show source here, so the server notices show
         * which side initiated the split -- jilles
         */
-       rb_snprintf(newcomment, sizeof(newcomment), "by %s: %s",
+       snprintf(newcomment, sizeof(newcomment), "by %s: %s",
                        from == source_p ? me.name : from->name, comment);
        if (!IsIOError(source_p))
                sendto_one(source_p, "SQUIT %s :%s", use_id(source_p),
@@ -1544,7 +1541,7 @@ exit_local_client(struct Client *client_p, struct Client *source_p, struct Clien
 **
 **        CLIENT_EXITED        if (client_p == source_p)
 **        0                if (client_p != source_p)
-*/
+ */
 int
 exit_client(struct Client *client_p,   /* The local client originating the
                                         * exit or NULL, if this exit is
@@ -1860,19 +1857,21 @@ init_uid(void)
 char *
 generate_uid(void)
 {
+       static int flipped = 0;
        int i;
 
+uid_restart:
        for(i = 8; i > 3; i--)
        {
                if(current_uid[i] == 'Z')
                {
                        current_uid[i] = '0';
-                       return current_uid;
+                       goto out;
                }
                else if(current_uid[i] != '9')
                {
                        current_uid[i]++;
-                       return current_uid;
+                       goto out;
                }
                else
                        current_uid[i] = 'A';
@@ -1882,11 +1881,18 @@ generate_uid(void)
        if(current_uid[3] == 'Z')
        {
                current_uid[i] = 'A';
-               s_assert(0);
+               flipped = 1;
        }
        else
                current_uid[i]++;
-
+out:
+       /* if this happens..well, i'm not sure what to say, but lets handle it correctly */
+       if(rb_unlikely(flipped))
+       {
+               /* this slows down uid generation a bit... */
+               if(find_id(current_uid) != NULL)
+                       goto uid_restart;
+       }
        return current_uid;
 }
 
@@ -1944,13 +1950,14 @@ close_connection(struct Client *client_p)
        else
                ServerStats.is_ni++;
 
+       del_from_cli_connid_hash(client_p);
+
        if(client_p->localClient->F != NULL)
        {
                /* attempt to flush any pending dbufs. Evil, but .. -- adrian */
                if(!IsIOError(client_p))
                        send_queued(client_p);
 
-               del_from_cli_connid_hash(client_p);
                rb_close(client_p->localClient->F);
                client_p->localClient->F = NULL;
        }
@@ -2010,7 +2017,7 @@ error_exit_client(struct Client *client_p, int error)
        if(error == 0)
                rb_strlcpy(errmsg, "Remote host closed the connection", sizeof(errmsg));
        else
-               rb_snprintf(errmsg, sizeof(errmsg), "Read error: %s", strerror(current_error));
+               snprintf(errmsg, sizeof(errmsg), "Read error: %s", strerror(current_error));
 
        exit_client(client_p, client_p, &me, errmsg);
 }