Преглед изворни кода

* Further optimize WHO parsing by avoiding match_my_nick() and just processing that need at got315 (End of WHO)

Bryan Drewery пре 16 година
родитељ
комит
45fd879b7f
1 измењених фајлова са 9 додато и 14 уклоњено
  1. 9 14
      src/mod/irc.mod/chan.c

+ 9 - 14
src/mod/irc.mod/chan.c

@@ -1854,7 +1854,6 @@ static int got352or4(struct chanset_t *chan, char *user, char *host, char *nick,
 {
   memberlist *m = ismember(chan, nick);	/* in my channel list copy? */
 //  bool waschanop = 0;
-  bool me = 0;
 //  struct chanset_t *ch = NULL;
 //  memberlist *ml = NULL;
 
@@ -1907,21 +1906,15 @@ static int got352or4(struct chanset_t *chan, char *user, char *host, char *nick,
       simple_snprintf(m->userip, sizeof(m->userip), "%s@%s", user, host);
   }
 
-  me = match_my_nick(nick);
-
-
-  if (me) {			/* Is it me? */
-//    strcpy(botuserhost, m->userhost);		/* Yes, save my own userhost */
-    m->joined = now;				/* set this to keep the whining masses happy */
-  }
-
   member_getuser(m);
 
   //This bot is set +r, so resolve.
-  if (!m->userip[0] && doresolv(chan))
-    resolve_to_member(chan, nick, host);
-  else if (!me && !m->user && m->userip[0] && doresolv(chan) && channel_rbl(chan))
-    resolve_to_rbl(chan, host);
+  if (doresolv(chan)) {
+    if (!m->userip[0])
+      resolve_to_member(chan, nick, host);
+    else if (!m->user && m->userip[0] && channel_rbl(chan))
+      resolve_to_rbl(chan, host);
+  }
 
   return 0;
 }
@@ -2004,12 +1997,14 @@ static int got315(char *from, char *msg)
   /* Finished getting who list, can now be considered officially ON CHANNEL */
   chan->ircnet_status |= CHAN_ACTIVE;
   chan->ircnet_status &= ~(CHAN_PEND | CHAN_JOINING);
+  memberlist* me = ismember(chan, botname);
   /* Am *I* on the channel now? if not, well d0h. */
-  if (shouldjoin(chan) && !ismember(chan, botname)) {
+  if (shouldjoin(chan) && !me) {
     putlog(LOG_MISC | LOG_JOIN, chan->dname, "Oops, I'm not really on %s.", chan->dname);
     chan->ircnet_status &= ~CHAN_ACTIVE;
     join_chan(chan);
   } else {
+    me->joined = now;				/* set this to keep the whining masses happy */
     if (me_op(chan))
       recheck_channel(chan, 2);
     else if (chan->channel.members == 1)