Explorar el Código

* Cleanup flag checking before joining as well

Bryan Drewery hace 16 años
padre
commit
6745c5b92b
Se han modificado 3 ficheros con 5 adiciones y 7 borrados
  1. 2 2
      src/mod/channels.mod/channels.c
  2. 1 2
      src/mod/channels.mod/tclchan.c
  3. 2 3
      src/mod/irc.mod/irc.c

+ 2 - 2
src/mod/channels.mod/channels.c

@@ -388,7 +388,7 @@ check_slowjoinpart(struct chanset_t *chan)
   } else if ((chan->channel.jointime) && (chan->channel.jointime < now)) {
       chan->status &= ~CHAN_INACTIVE;
       chan->channel.jointime = 0;
-    if (shouldjoin(chan) && !channel_active(chan))
+    if (shouldjoin(chan))
       join_chan(chan);
   } else if (channel_closed(chan)) {
     enforce_closed(chan);
@@ -481,7 +481,7 @@ static void got_jn(int idx, char *code, char *par)
   if (chan->channel.jointime && channel_inactive(chan)) {
     chan->status &= ~CHAN_INACTIVE;
     chan->channel.jointime = 0;
-    if (!conf.bot->hub && shouldjoin(chan) && !channel_active(chan))
+    if (!conf.bot->hub && shouldjoin(chan))
       join_chan(chan);
   }
 }

+ 1 - 2
src/mod/channels.mod/tclchan.c

@@ -805,9 +805,8 @@ int channel_modify(char *result, struct chanset_t *chan, int items, char **item,
     if ((old_status ^ chan->status) & (CHAN_INACTIVE | CHAN_BACKUP)) {
       if (!shouldjoin(chan) && (chan->ircnet_status & (CHAN_ACTIVE | CHAN_PEND)))
         dprintf(DP_SERVER, "PART %s\n", chan->name[0] ? chan->name : chan->dname);
-      if (shouldjoin(chan) && !(chan->status & (CHAN_ACTIVE | CHAN_PEND | CHAN_JOINING))) {
+      else if (shouldjoin(chan))
         join_chan(chan);
-      }
     }
     if (me_op(chan)) {
       if ((old_status ^ chan->status) & (CHAN_ENFORCEBANS|CHAN_NOUSERBANS|CHAN_DYNAMICBANS|CHAN_NOUSEREXEMPTS|CHAN_NOUSERINVITES|CHAN_DYNAMICEXEMPTS|CHAN_DYNAMICINVITES)) {

+ 2 - 3
src/mod/irc.mod/irc.c

@@ -1346,7 +1346,7 @@ static void send_chan_who(int queue, struct chanset_t *chan) {
 }
 
 void join_chan(struct chanset_t* chan, int idx) {
-  if (shouldjoin(chan) && !channel_joining(chan)) {
+  if (shouldjoin(chan) && !(chan->status & (CHAN_ACTIVE | CHAN_PEND | CHAN_JOINING))) {
     dprintf(idx, "JOIN %s %s\n",
         (chan->name[0]) ? chan->name : chan->dname,
         chan->channel.key[0] ? chan->channel.key : chan->key_prot);
@@ -1598,9 +1598,8 @@ check_expired_chanstuff(struct chanset_t *chan)
       m = n;
     }
     check_lonely_channel(chan);
-  } else if (shouldjoin(chan) && !channel_pending(chan)) {
+  } else if (shouldjoin(chan))
     join_chan(chan);
-  }
 }
 
 void