fixed ssl.c bug when ssl backend returns IO_BLOCKED but IO engine doesn't get informe...
[ircu2.10.12-pk.git] / ircd / m_svsjoin.c
index 94156fdcd42ed0d9b14149ac06bc05d0fc471f0b..c3fa556f8fd9697fd6c6337089dc84f2e89f76c9 100644 (file)
@@ -78,8 +78,8 @@ int m_svsjoin(struct Client *cptr, struct Client *sptr, int parc, char *parv[])
     joinbuf_init(&join, acptr, acptr, JOINBUF_TYPE_JOIN, 0, 0);
     joinbuf_init(&create, acptr, acptr, JOINBUF_TYPE_CREATE, 0, TStime());
 
-    flags = (chptr->users == 0) ? CHFL_CHANOP : CHFL_DEOPPED;
-    if(chptr) joinbuf_join(&join, chptr, flags);
+    flags = (chptr->users == 0) ? CHFL_CHANOP | CHFL_CHANNEL_MANAGER : CHFL_DEOPPED;
+    if(chptr->users) joinbuf_join(&join, chptr, flags);
     else joinbuf_join(&create, chptr, flags);
 
     /* Send information to the user. */
@@ -87,7 +87,7 @@ int m_svsjoin(struct Client *cptr, struct Client *sptr, int parc, char *parv[])
         send_reply(acptr, RPL_TOPIC, chptr->chname, chptr->topic);
         send_reply(acptr, RPL_TOPICWHOTIME, chptr->chname, chptr->topic_nick, chptr->topic_time);
     }
-    do_names(acptr, chptr, NAMES_ALL|NAMES_EON);
+    do_names(acptr, chptr, NAMES_ALL|NAMES_EON|(((chptr->mode.mode & MODE_AUDITORIUM) && !(flags & CHFL_CHANOP)) ? NAMES_OPS : 0));
 
     joinbuf_flush(&join);
     joinbuf_flush(&create);
@@ -154,7 +154,7 @@ signed int ms_svsjoin(struct Client* cptr, struct Client* sptr, signed int parc,
         send_reply(acptr, RPL_TOPIC, chptr->chname, chptr->topic);
         send_reply(acptr, RPL_TOPICWHOTIME, chptr->chname, chptr->topic_nick, chptr->topic_time);
     }
-    do_names(acptr, chptr, NAMES_ALL|NAMES_EON);
+    do_names(acptr, chptr, NAMES_ALL|NAMES_EON|(((chptr->mode.mode & MODE_AUDITORIUM) && !(flags & CHFL_CHANOP)) ? NAMES_OPS : 0));
 
     joinbuf_flush(&join);
     joinbuf_flush(&create);