This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Undernet IRC Server Source Code.".

The branch, u2_10_12_branch has been updated
       via  f8f62f8cb355fd083bbdce33ea1bb01a4b8c3def (commit)
       via  53f7668a7d81ae5273ee7932f1db71dc02f748b8 (commit)
       via  37a02bccd797538454cab49deafc189ec5440f5b (commit)
       via  6779e5b3e173fac0e2fbea7ffddf953493b7442e (commit)
       via  cda563bdb085a2cf4ee057481f70edd1316e7988 (commit)
       via  9f28062b3d6e5b665c7bb742e75c3da8b1ec01bd (commit)
       via  87938c3315b3c2ba753ee1e41825b036f98cb8cb (commit)
       via  0bc6caeeb0f145f7861974812b9acd2b70d1aaf4 (commit)
       via  0039f1f28d543ec818b37e80eee6d7b896155f01 (commit)
       via  9cbac8bd7ebd61d34e0adcb8eb28017ba7c6c09b (commit)
       via  4be9a0c4be598c5aa783cfca72d4dea1af2d5b7b (commit)
       via  88f58ae3ceefe36d194ab742a6d67a45b8b8b34f (commit)
       via  c1bd9762d2f705eda00b5e93c1ebb5d6625eff64 (commit)
       via  2628c3c7fca1025e0f8334afb3f24e3a2a0e7556 (commit)
       via  68727a8d78519fe005dec72caadc08d76d72fa64 (commit)
      from  2dcf47b3efe4ff28f5d06ba9346addad696f7a98 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit f8f62f8cb355fd083bbdce33ea1bb01a4b8c3def
Author: Michael Poole <mdpo...@troilus.org>
Date:   Tue Jan 2 21:56:53 2024 -0500

    Only apply MaxSendq when a class exists
    
    Fixes: b9c579031c1df986f906608543fed0a276f382a1

diff --git a/ircd/client.c b/ircd/client.c
index ed7f9bfb..808dc917 100644
--- a/ircd/client.c
+++ b/ircd/client.c
@@ -189,7 +189,7 @@ client_set_privs(struct Client *client, struct ConfItem 
*oper, int forceOper)
     /* For remote opers, we need to also set their max sendq because
      * we will not be attaching an Operator block to their client.
      */
-    if (MaxSendq(class))
+    if (class && MaxSendq(class))
       cli_max_sendq(client) = MaxSendq(class);
   }
 
commit 53f7668a7d81ae5273ee7932f1db71dc02f748b8
Merge: 6779e5b3 37a02bcc
Author: Michael Poole <mdpo...@troilus.org>
Date:   Wed Dec 27 11:26:16 2023 +1300

    Merge pull request #32 from hiddn/glinereasonfix
    
    Fix gline reason change

commit 37a02bccd797538454cab49deafc189ec5440f5b
Author: Hidden <hid...@undernet.org>
Date:   Sun Dec 3 18:47:55 2023 -0500

    Fix gline reason change
    
    This bug has prevented proper gline reason changes in production
    for a very long time. With this fix, it is now working as expected.

diff --git a/ircd/m_gline.c b/ircd/m_gline.c
index 355ce4a2..1c4b5442 100644
--- a/ircd/m_gline.c
+++ b/ircd/m_gline.c
@@ -311,7 +311,7 @@ ms_gline(struct Client *cptr, struct Client *sptr, int 
parc, char *parv[])
        if (!agline || /* gline creation, has to be the reason */
            /* trial-convert as lifetime, and if it doesn't fully convert,
             * it must be the reason */
-           (!(lifetime = strtoul(parv[5], &tmp, 10)) && !*tmp)) {
+           (lifetime = strtoul(parv[5], &tmp, 10), *tmp != '\0')) {
          lifetime = 0;
          reason = parv[5];
 
commit 6779e5b3e173fac0e2fbea7ffddf953493b7442e
Merge: cda563bd 9f28062b
Author: Michael Poole <mdpo...@troilus.org>
Date:   Tue Nov 21 20:54:10 2023 -0500

    Merge pull request #31 from hiddn/hid/notice
    
    Apply '/msg nick@server' logic to /notice

commit cda563bdb085a2cf4ee057481f70edd1316e7988
Merge: 0bc6caee 87938c33
Author: Michael Poole <mdpo...@troilus.org>
Date:   Tue Nov 21 20:53:37 2023 -0500

    Merge pull request #6 from empus/chanmode_P
    
    channel mode +P

commit 9f28062b3d6e5b665c7bb742e75c3da8b1ec01bd
Author: Hidden <hid...@undernet.org>
Date:   Tue Nov 21 17:38:34 2023 -0500

    Optimization: check IsChannelService() before match()

diff --git a/ircd/ircd_relay.c b/ircd/ircd_relay.c
index 2eb25a2a..325d3d73 100644
--- a/ircd/ircd_relay.c
+++ b/ircd/ircd_relay.c
@@ -294,8 +294,8 @@ void relay_directed_message(struct Client* sptr, char* 
name, char* server, const
    * this. -- Isomer 2001-09-16
    */
   if (!(acptr = FindUser(name)) || !MyUser(acptr) ||
-      (!EmptyString(host) && 0 != match(host, cli_user(acptr)->host)) ||
-      !IsChannelService(acptr))
+      !IsChannelService(acptr) ||
+      (!EmptyString(host) && 0 != match(host, cli_user(acptr)->host)))
   {
     /*
      * By this stage we might as well not bother because they will
@@ -363,8 +363,8 @@ void relay_directed_notice(struct Client* sptr, char* name, 
char* server, const
    * allow services to receive /notice n...@server.undernet.org notices.
   */
   if (!(acptr = FindUser(name)) || !MyUser(acptr) ||
-      (!EmptyString(host) && 0 != match(host, cli_user(acptr)->host)) ||
-      !IsChannelService(acptr))
+      !IsChannelService(acptr) ||
+      (!EmptyString(host) && 0 != match(host, cli_user(acptr)->host)))
   {
     send_reply(sptr, ERR_NOSUCHNICK, name);
     return;
commit 87938c3315b3c2ba753ee1e41825b036f98cb8cb
Merge: c1bd9762 0bc6caee
Author: Empus <em...@undernet.org>
Date:   Tue Nov 21 23:17:22 2023 +1000

    Merge branch 'u2_10_12_branch' into chanmode_P

diff --cc include/channel.h
index 8af4748f,2e834401..50b6444d
--- a/include/channel.h
+++ b/include/channel.h
@@@ -113,15 -114,14 +114,15 @@@ struct Client
  #define MODE_APASS    0x200000
  #define MODE_WASDELJOINS 0x400000     /**< Not DELJOINS, but some joins
                                         * pending */
- 
- #define MODE_NOPARTMSGS 0x4000000       /**< +P No part messages */
 -#define MODE_MODERATENOREG 0x2000000    /**< +M Moderate unauthed users */
++#define MODE_NOPARTMSGS 0x800000       /**< +P No part messages */
++#define MODE_MODERATENOREG 0x1000000    /**< +M Moderate unauthed users */
  
  /** mode flags which take another parameter (With PARAmeterS)
   */
  #define MODE_WPARAS     
(MODE_CHANOP|MODE_VOICE|MODE_BAN|MODE_KEY|MODE_LIMIT|MODE_APASS|MODE_UPASS)
  
  /** Available Channel modes */
- #define infochanmodes feature_bool(FEAT_OPLEVELS) ? "AbiklmnopstUvrDdRcCP" : 
"biklmnopstvrDdRcCP"
 -#define infochanmodes feature_bool(FEAT_OPLEVELS) ? "AbiklmnopstUvrDdRcCM" : 
"biklmnopstvrDdRcCM"
++#define infochanmodes feature_bool(FEAT_OPLEVELS) ? "AbiklmnopstUvrDdRcCPM" : 
"biklmnopstvrDdRcCPM"
  /** Available Channel modes that take parameters */
  #define infochanmodeswithparams feature_bool(FEAT_OPLEVELS) ? "AbkloUv" : 
"bklov"
  
diff --cc ircd/channel.c
index eca559fe,cf11b53c..0a533ca5
--- a/ircd/channel.c
+++ b/ircd/channel.c
@@@ -839,8 -839,8 +839,10 @@@ void channel_modes(struct Client *cptr
      *mbuf++ = 'c';
    if (chptr->mode.mode & MODE_NOCTCP)
      *mbuf++ = 'C';
 +  if (chptr->mode.mode & MODE_NOPARTMSGS)
 +    *mbuf++ = 'P';
+   if (chptr->mode.mode & MODE_MODERATENOREG)
+     *mbuf++ = 'M';
    if (chptr->mode.limit) {
      *mbuf++ = 'l';
      ircd_snprintf(0, pbuf, buflen, "%u", chptr->mode.limit);
@@@ -1538,7 -1538,7 +1540,8 @@@ modebuf_flush_int(struct ModeBuf *mbuf
      MODE_REGISTERED,  'R',
      MODE_NOCOLOR,       'c',
      MODE_NOCTCP,        'C',
 +    MODE_NOPARTMSGS,    'P',
+     MODE_MODERATENOREG, 'M',
  /*  MODE_KEY,         'k', */
  /*  MODE_BAN,         'b', */
      MODE_LIMIT,               'l',
@@@ -1969,8 -1970,8 +1973,8 @@@ modebuf_mode(struct ModeBuf *mbuf, unsi
  
    mode &= (MODE_ADD | MODE_DEL | MODE_PRIVATE | MODE_SECRET | MODE_MODERATED |
           MODE_TOPICLIMIT | MODE_INVITEONLY | MODE_NOPRIVMSGS | MODE_REGONLY |
-            MODE_NOCOLOR | MODE_NOCTCP | MODE_NOPARTMSGS |
-            MODE_DELJOINS | MODE_WASDELJOINS | MODE_REGISTERED);
 -         MODE_NOCOLOR | MODE_NOCTCP | MODE_MODERATENOREG |
++         MODE_NOCOLOR | MODE_NOCTCP | MODE_NOPARTMSGS | MODE_MODERATENOREG |
+          MODE_DELJOINS | MODE_WASDELJOINS | MODE_REGISTERED);
  
    if (!(mode & ~(MODE_ADD | MODE_DEL))) /* don't add empty modes... */
      return;
@@@ -2105,7 -2106,7 +2109,8 @@@ modebuf_extract(struct ModeBuf *mbuf, c
      MODE_DELJOINS,      'D',
      MODE_NOCOLOR,       'c',
      MODE_NOCTCP,        'C',
 +    MODE_NOPARTMSGS,    'P',
+     MODE_MODERATENOREG, 'M',
      0x0, 0x0
    };
    unsigned int add;
@@@ -3249,7 -3250,7 +3254,8 @@@ mode_parse(struct ModeBuf *mbuf, struc
      MODE_DELJOINS,      'D',
      MODE_NOCOLOR,       'c',
      MODE_NOCTCP,        'C',
 +    MODE_NOPARTMSGS,    'P',
+     MODE_MODERATENOREG, 'M',
      MODE_ADD,         '+',
      MODE_DEL,         '-',
      0x0, 0x0
diff --cc ircd/m_clearmode.c
index ade8785b,c616f4c8..2476b15b
--- a/ircd/m_clearmode.c
+++ b/ircd/m_clearmode.c
@@@ -126,7 -126,7 +126,8 @@@ do_clearmode(struct Client *cptr, struc
      MODE_DELJOINS,      'D',
      MODE_NOCOLOR,       'c',
      MODE_NOCTCP,        'C',
 +    MODE_NOPARTMSGS,    'P',
+     MODE_MODERATENOREG, 'M',
      0x0, 0x0
    };
    int *flag_p;
diff --cc ircd/m_part.c
index 88ace353,697f430a..e5b69811
--- a/ircd/m_part.c
+++ b/ircd/m_part.c
@@@ -151,19 -152,13 +152,19 @@@ int m_part(struct Client* cptr, struct 
  
      assert(!IsZombie(member)); /* Local users should never zombie */
  
-     if (!member_can_send_to_channel(member, 0))
+     if (!member_can_send_to_channel(member, 0)
+         || ((member->channel->mode.mode & MODE_NOCOLOR) && colors)
+         || (IsDelayedTarget(member) && check_target_limit(sptr, NULL, chptr)))
      {
        flags |= CHFL_BANNED;
-       /* Remote clients don't want to see a comment either. */
-       parts.jb_comment = 0;
      }
  
 +    if ((member->channel->mode.mode & MODE_NOCOLOR) && colors)
 +      flags |= CHFL_BANNED;
 +
 +    if (member->channel->mode.mode & MODE_NOPARTMSGS)
 +      flags |= CHFL_BANNED;
 +
      if (IsDelayedJoin(member))
        flags |= CHFL_DELAYED;
  
diff --cc ircd/m_quit.c
index df422a1c,c8514170..dec6084f
--- a/ircd/m_quit.c
+++ b/ircd/m_quit.c
@@@ -108,12 -111,17 +111,18 @@@ int m_quit(struct Client* cptr, struct 
    if (cli_user(sptr)) {
      struct Membership* chan;
      for (chan = cli_user(sptr)->channel; chan; chan = chan->next_channel) {
 -      if (!IsZombie(chan) && !IsDelayedJoin(chan) && 
!member_can_send_to_channel(chan, 0))
 +        if (!IsZombie(chan) && !IsDelayedJoin(chan) &&
 +          (!member_can_send_to_channel(chan, 0) || chan->channel->mode.mode & 
MODE_NOPARTMSGS))
          return exit_client(cptr, sptr, sptr, "Signed off");
+       if (IsDelayedTarget(chan))
+         ++delayed_targets;
      }
    }
-   if (parc > 1 && !BadPtr(parv[parc - 1]))
+ 
+   /* Bypass check_target_limit() because we do not want to advance 
cli_nexttarget(). */
+   if (delayed_targets)
+     delayed_targets = cli_nexttarget(sptr) + TARGET_DELAY * delayed_targets > 
CurrentTime;
+   if (parc > 1 && !BadPtr(parv[parc - 1]) && !delayed_targets)
      return exit_client_msg(cptr, sptr, sptr, "Quit: %s", parv[parc - 1]);
    else
      return exit_client(cptr, sptr, sptr, "Quit");
commit 0bc6caeeb0f145f7861974812b9acd2b70d1aaf4
Merge: 4be9a0c4 9cbac8bd
Author: Michael Poole <mdpo...@troilus.org>
Date:   Tue Nov 21 07:48:24 2023 -0500

    Merge pull request #30 from hiddn/infofix
    
    Fixes #29 (few hashes displayed to non-opers)

commit 0039f1f28d543ec818b37e80eee6d7b896155f01
Author: Hidden <hid...@undernet.org>
Date:   Tue Nov 21 04:35:36 2023 -0500

    Apply '/msg nick@server' logic to /notice

diff --git a/ircd/ircd_relay.c b/ircd/ircd_relay.c
index 2cbb90ec..2eb25a2a 100644
--- a/ircd/ircd_relay.c
+++ b/ircd/ircd_relay.c
@@ -333,8 +333,12 @@ void relay_directed_notice(struct Client* sptr, char* 
name, char* server, const
   assert(0 != text);
   assert(0 != server);
 
-  if (0 == (acptr = FindServer(server + 1)))
+  if ((acptr = FindServer(server + 1)) == NULL || !IsService(acptr))
+  {
+    send_reply(sptr, ERR_NOSUCHNICK, name);
     return;
+  }
+
   /*
    * NICK[%host]@server addressed? See if <server> is me first
    */
@@ -355,6 +359,17 @@ void relay_directed_notice(struct Client* sptr, char* 
name, char* server, const
       (!EmptyString(host) && 0 != match(host, cli_user(acptr)->host)))
     return;
 
+  /* Apply the same logic to NOTICE that is applied to PRIVMSG: only
+   * allow services to receive /notice n...@server.undernet.org notices.
+  */
+  if (!(acptr = FindUser(name)) || !MyUser(acptr) ||
+      (!EmptyString(host) && 0 != match(host, cli_user(acptr)->host)) ||
+      !IsChannelService(acptr))
+  {
+    send_reply(sptr, ERR_NOSUCHNICK, name);
+    return;
+  }
+
   *server = '@';
   if (host)
     *--host = '%';
commit 9cbac8bd7ebd61d34e0adcb8eb28017ba7c6c09b
Author: Hidden <hid...@undernet.org>
Date:   Tue Nov 7 23:01:56 2023 -0500

    Fixes #29 (few hashes displayed to non-opers)
    
    - Now hiding all hashes to non-opers in /info command
    - Adding Entrope to the list of coder-com maintainers for u2.10 at the
    same time
    - Removing Isomer from the list of current coder-com maintainers
    - Fixing a typo (maintainors -> maintainers)

diff --git a/ircd/m_info.c b/ircd/m_info.c
index 0f18c438..6f85a6b9 100644
--- a/ircd/m_info.c
+++ b/ircd/m_info.c
@@ -111,7 +111,7 @@ int m_info(struct Client* cptr, struct Client* sptr, int 
parc, char* parv[])
       HUNTED_ISME)
        return 0;
 
-  while (text[212])
+  while (text[218])
   {
     send_reply(sptr, RPL_INFO, *text);
     text++;
@@ -141,7 +141,7 @@ int ms_info(struct Client* cptr, struct Client* sptr, int 
parc, char* parv[])
   if (hunt_server_cmd(sptr, CMD_INFO, cptr, 1, ":%C", 1, parc, parv) !=
       HUNTED_ISME)
        return 0;
-  while (text[212])
+  while (text[218])
   {
     if (!IsOper(sptr))
       send_reply(sptr, RPL_INFO, *text);
@@ -174,7 +174,7 @@ int mo_info(struct Client* cptr, struct Client* sptr, int 
parc, char* parv[])
   if (hunt_server_cmd(sptr, CMD_INFO, cptr, 1, ":%C", 1, parc, parv) ==
       HUNTED_ISME)
   {
-    while (text[212])
+    while (text[218])
     {
       if (!IsOper(sptr))
        send_reply(sptr, RPL_INFO, *text);
diff --git a/ircd/version.c.SH b/ircd/version.c.SH
index fca1804c..b27381a5 100644
--- a/ircd/version.c.SH
+++ b/ircd/version.c.SH
@@ -67,8 +67,8 @@ const char *infotext[] = {
     "The head developer of the u2.10 source tree was:",
     "Bleep        Thomas Helvey            <t...@inxpress.net>",
     "",
-    "The current maintainors of the u2.10 source tree are:",
-    "Isomer       Perry Lorier             <pe...@coders.net>",
+    "The current maintainers of the u2.10 source tree are:",
+    "Entrope      Michael Poole            <mdpo...@troilus.org>",
     "Kev          Kevin Mitchell           <klmi...@mit.edu>",
     "",
     "Contributors to this release:",
commit 4be9a0c4be598c5aa783cfca72d4dea1af2d5b7b
Merge: 2dcf47b3 88f58ae3
Author: Michael Poole <mdpo...@troilus.org>
Date:   Tue Nov 14 20:30:47 2023 -0500

    Merge pull request #23 from davidtorrell/u2_10_12_branch
    
    fix on line 837 example.conf.

commit 88f58ae3ceefe36d194ab742a6d67a45b8b8b34f
Author: David Torrell <da...@ciber.cat>
Date:   Wed Oct 12 11:41:55 2022 +0200

    fix on line 837 example.conf.

diff --git a/doc/example.conf b/doc/example.conf
index 131bfbf7..6f7dfd25 100644
--- a/doc/example.conf
+++ b/doc/example.conf
@@ -128,10 +128,10 @@ Admin {
 # always be allowed.  Otherwise, new clients will be allowed if there
 # are fewer than maxlinks clients in the class, up to a limit of about
 # 4,000,000,000.
-# 
-# <connect freq> applies only to servers, and specifies the frequency 
+#
+# <connect freq> applies only to servers, and specifies the frequency
 # that the server tries to autoconnect. setting this to 0 will cause
-# the server to attempt to connect repeatedly with no delay until the 
+# the server to attempt to connect repeatedly with no delay until the
 # <maximum links> condition is satisfied. This is a Bad Thing(tm).
 # Note that times can be specified as a number, or by giving something
 # like: 1 minutes 20 seconds, or 1*60+20.
@@ -834,7 +834,7 @@ WebIRC {
 # 127.0.0.1 from checks, write "::1" as an except address.
 IPCheck {
   except "::1";
-}
+};
 
 # [features]
 # IRC servers have a large number of options and features.  Most of these
commit c1bd9762d2f705eda00b5e93c1ebb5d6625eff64
Author: Empus <em...@undernet.org>
Date:   Sat May 4 11:00:26 2019 -0700

    enhanced to also prevent quit messages

diff --git a/ircd/m_quit.c b/ircd/m_quit.c
index 9ccc3615..df422a1c 100644
--- a/ircd/m_quit.c
+++ b/ircd/m_quit.c
@@ -108,7 +108,8 @@ int m_quit(struct Client* cptr, struct Client* sptr, int 
parc, char* parv[])
   if (cli_user(sptr)) {
     struct Membership* chan;
     for (chan = cli_user(sptr)->channel; chan; chan = chan->next_channel) {
-        if (!IsZombie(chan) && !IsDelayedJoin(chan) && 
!member_can_send_to_channel(chan, 0))
+        if (!IsZombie(chan) && !IsDelayedJoin(chan) &&
+          (!member_can_send_to_channel(chan, 0) || chan->channel->mode.mode & 
MODE_NOPARTMSGS))
         return exit_client(cptr, sptr, sptr, "Signed off");
     }
   }
commit 2628c3c7fca1025e0f8334afb3f24e3a2a0e7556
Author: Empus <em...@undernet.org>
Date:   Sat May 4 09:44:29 2019 -0700

    missing the most crucial piece, the mode

diff --git a/ircd/channel.c b/ircd/channel.c
index 125ad7b8..eca559fe 100644
--- a/ircd/channel.c
+++ b/ircd/channel.c
@@ -839,6 +839,8 @@ void channel_modes(struct Client *cptr, char *mbuf, char 
*pbuf, int buflen,
     *mbuf++ = 'c';
   if (chptr->mode.mode & MODE_NOCTCP)
     *mbuf++ = 'C';
+  if (chptr->mode.mode & MODE_NOPARTMSGS)
+    *mbuf++ = 'P';
   if (chptr->mode.limit) {
     *mbuf++ = 'l';
     ircd_snprintf(0, pbuf, buflen, "%u", chptr->mode.limit);
@@ -1536,6 +1538,7 @@ modebuf_flush_int(struct ModeBuf *mbuf, int all)
     MODE_REGISTERED,   'R',
     MODE_NOCOLOR,       'c',
     MODE_NOCTCP,        'C',
+    MODE_NOPARTMSGS,    'P',
 /*  MODE_KEY,          'k', */
 /*  MODE_BAN,          'b', */
     MODE_LIMIT,                'l',
@@ -1966,7 +1969,7 @@ modebuf_mode(struct ModeBuf *mbuf, unsigned int mode)
 
   mode &= (MODE_ADD | MODE_DEL | MODE_PRIVATE | MODE_SECRET | MODE_MODERATED |
           MODE_TOPICLIMIT | MODE_INVITEONLY | MODE_NOPRIVMSGS | MODE_REGONLY |
-           MODE_NOCOLOR | MODE_NOCTCP |
+           MODE_NOCOLOR | MODE_NOCTCP | MODE_NOPARTMSGS |
            MODE_DELJOINS | MODE_WASDELJOINS | MODE_REGISTERED);
 
   if (!(mode & ~(MODE_ADD | MODE_DEL))) /* don't add empty modes... */
@@ -2102,6 +2105,7 @@ modebuf_extract(struct ModeBuf *mbuf, char *buf)
     MODE_DELJOINS,      'D',
     MODE_NOCOLOR,       'c',
     MODE_NOCTCP,        'C',
+    MODE_NOPARTMSGS,    'P',
     0x0, 0x0
   };
   unsigned int add;
@@ -3245,6 +3249,7 @@ mode_parse(struct ModeBuf *mbuf, struct Client *cptr, 
struct Client *sptr,
     MODE_DELJOINS,      'D',
     MODE_NOCOLOR,       'c',
     MODE_NOCTCP,        'C',
+    MODE_NOPARTMSGS,    'P',
     MODE_ADD,          '+',
     MODE_DEL,          '-',
     0x0, 0x0
commit 68727a8d78519fe005dec72caadc08d76d72fa64
Author: Empus <em...@undernet.org>
Date:   Sat May 4 09:39:20 2019 -0700

    implementation of chanmode +P
    prevent all channel part messages

diff --git a/include/channel.h b/include/channel.h
index fc4916fe..8af4748f 100644
--- a/include/channel.h
+++ b/include/channel.h
@@ -113,12 +113,15 @@ struct Client;
 #define MODE_APASS     0x200000
 #define MODE_WASDELJOINS 0x400000      /**< Not DELJOINS, but some joins
                                         * pending */
+
+#define MODE_NOPARTMSGS 0x4000000       /**< +P No part messages */
+
 /** mode flags which take another parameter (With PARAmeterS)
  */
 #define MODE_WPARAS     
(MODE_CHANOP|MODE_VOICE|MODE_BAN|MODE_KEY|MODE_LIMIT|MODE_APASS|MODE_UPASS)
 
 /** Available Channel modes */
-#define infochanmodes feature_bool(FEAT_OPLEVELS) ? "AbiklmnopstUvrDdRcC" : 
"biklmnopstvrDdRcC"
+#define infochanmodes feature_bool(FEAT_OPLEVELS) ? "AbiklmnopstUvrDdRcCP" : 
"biklmnopstvrDdRcCP"
 /** Available Channel modes that take parameters */
 #define infochanmodeswithparams feature_bool(FEAT_OPLEVELS) ? "AbkloUv" : 
"bklov"
 
diff --git a/ircd/m_clearmode.c b/ircd/m_clearmode.c
index fdac7883..ade8785b 100644
--- a/ircd/m_clearmode.c
+++ b/ircd/m_clearmode.c
@@ -126,6 +126,7 @@ do_clearmode(struct Client *cptr, struct Client *sptr, 
struct Channel *chptr,
     MODE_DELJOINS,      'D',
     MODE_NOCOLOR,       'c',
     MODE_NOCTCP,        'C',
+    MODE_NOPARTMSGS,    'P',
     0x0, 0x0
   };
   int *flag_p;
diff --git a/ircd/m_part.c b/ircd/m_part.c
index a2c3bd85..88ace353 100644
--- a/ircd/m_part.c
+++ b/ircd/m_part.c
@@ -161,6 +161,9 @@ int m_part(struct Client* cptr, struct Client* sptr, int 
parc, char* parv[])
     if ((member->channel->mode.mode & MODE_NOCOLOR) && colors)
       flags |= CHFL_BANNED;
 
+    if (member->channel->mode.mode & MODE_NOPARTMSGS)
+      flags |= CHFL_BANNED;
+
     if (IsDelayedJoin(member))
       flags |= CHFL_DELAYED;
 
-----------------------------------------------------------------------

Summary of changes:
 doc/example.conf   |  6 +++---
 include/channel.h  |  5 +++--
 ircd/channel.c     |  7 ++++++-
 ircd/client.c      |  2 +-
 ircd/ircd_relay.c  | 21 ++++++++++++++++++---
 ircd/m_clearmode.c |  1 +
 ircd/m_gline.c     |  2 +-
 ircd/m_info.c      |  6 +++---
 ircd/m_part.c      |  6 ++++++
 ircd/m_quit.c      |  3 ++-
 ircd/version.c.SH  |  4 ++--
 11 files changed, 46 insertions(+), 17 deletions(-)


hooks/post-receive
-- 
Undernet IRC Server Source Code.

-- 
You received this message because you are subscribed to the Google Groups 
"Undernet Mailing List - patches@undernet.org" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to patches+unsubscr...@undernet.org.

Reply via email to