]> jfr.im git - irc/evilnet/x3.git/blobdiff - src/proto-p10.c
helpfile improvements
[irc/evilnet/x3.git] / src / proto-p10.c
index 649c4ab252bf2dd8162e4b95373f874e46ea55e3..4783755512798e96bf67ca37314117bbbdb250cc 100644 (file)
@@ -1,7 +1,7 @@
 /* proto-p10.c - IRC protocol output
  * Copyright 2000-2004 srvx Development Team
  *
- * This file is part of srvx.
+ * This file is part of x3.
  *
  * srvx is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -1708,6 +1708,7 @@ init_parse(void)
     dict_insert(irc_func_dict, "401", cmd_dummy); /* target left network */
     dict_insert(irc_func_dict, "403", cmd_dummy); /* no such channel */
     dict_insert(irc_func_dict, "404", cmd_dummy); /* cannot send to channel */
+    dict_insert(irc_func_dict, "439", cmd_dummy); /* target change too fast */
     dict_insert(irc_func_dict, "441", cmd_dummy); /* target isn't on that channel */
     dict_insert(irc_func_dict, "442", cmd_dummy); /* you aren't on that channel */
     dict_insert(irc_func_dict, "443", cmd_dummy); /* is already on channel (after invite?) */
@@ -1950,6 +1951,7 @@ AddService(const char *nick, const char *modes, const char *desc, const char *ho
     if (!hostname)
         hostname = self->name;
     make_numeric(self, local_num, numeric);
+    /* TODO: Make these modes part of the conf file */
     return AddUser(self, nick, nick, hostname, modes ? modes : "+oik", numeric, desc, now, "AAAAAA");
 }
 
@@ -2077,6 +2079,9 @@ DelUser(struct userNode* user, struct userNode *killer, int announce, const char
     /* mark them as dead, in case anybody cares */
     user->dead = 1;
 
+    /* remove pending adduser commands */
+    wipe_adduser_pending(NULL, user);
+
     /* remove user from all channels */
     while (user->channels.used > 0)
         DelChannelUser(user, user->channels.list[user->channels.used-1]->channel, false, 0);
@@ -2235,6 +2240,7 @@ mod_chanmode_parse(struct chanNode *channel, char **modes, unsigned int argc, un
         case 'Q': do_chan_mode(MODE_NOQUITMSGS); break;
         case 'T': do_chan_mode(MODE_NOAMSG); break;
         case 'O': do_chan_mode(MODE_OPERSONLY); break;
+        case 'Z': do_chan_mode(MODE_SSLONLY); break;
        case 'z':
          if (!(flags & MCP_REGISTERED)) {
           do_chan_mode(MODE_REGISTERED);
@@ -2412,8 +2418,7 @@ mod_chanmode_announce(struct userNode *who, struct chanNode *channel, struct mod
         DO_MODE_CHAR(NOAMSG, 'T');
         DO_MODE_CHAR(OPERSONLY, 'O');
         DO_MODE_CHAR(REGISTERED, 'z');
-        // uncomment this for ssl support
-        //DO_MODE_CHAR(SSLONLY, 'Z');
+        DO_MODE_CHAR(SSLONLY, 'Z');
 #undef DO_MODE_CHAR
         if (change->modes_clear & channel->modes & MODE_KEY)
             mod_chanmode_append(&chbuf, 'k', channel->key);
@@ -2464,8 +2469,7 @@ mod_chanmode_announce(struct userNode *who, struct chanNode *channel, struct mod
         DO_MODE_CHAR(NOAMSG, 'T');
         DO_MODE_CHAR(OPERSONLY, 'O');
         DO_MODE_CHAR(REGISTERED, 'z');
-        // uncomment this for ssl support
-        //DO_MODE_CHAR(SSLONLY, 'Z');
+        DO_MODE_CHAR(SSLONLY, 'Z');
 #undef DO_MODE_CHAR
         if(change->modes_set & MODE_KEY)
             mod_chanmode_append(&chbuf, 'k', change->new_key);
@@ -2533,8 +2537,7 @@ mod_chanmode_format(struct mod_chanmode *change, char *outbuff)
         DO_MODE_CHAR(NOAMSG, 'T');
         DO_MODE_CHAR(OPERSONLY, 'O');
         DO_MODE_CHAR(REGISTERED, 'z');
-        // uncomment this for ssl support
-        //DO_MODE_CHAR(SSLONLY, 'Z');
+        DO_MODE_CHAR(SSLONLY, 'Z');
 #undef DO_MODE_CHAR
     }
     if (change->modes_set) {
@@ -2557,8 +2560,7 @@ mod_chanmode_format(struct mod_chanmode *change, char *outbuff)
         DO_MODE_CHAR(NOAMSG, 'T');
         DO_MODE_CHAR(OPERSONLY, 'O');
         DO_MODE_CHAR(REGISTERED, 'z');
-        // uncomment this for ssl support
-        //DO_MODE_CHAR(SSLONLY, 'Z');
+        DO_MODE_CHAR(SSLONLY, 'Z');
 #undef DO_MODE_CHAR
         switch (change->modes_set & (MODE_KEY|MODE_LIMIT)) {
         case MODE_KEY|MODE_LIMIT:
@@ -2613,6 +2615,7 @@ clear_chanmode(struct chanNode *channel, const char *modes)
         case 'T': remove |= MODE_NOAMSG; break;
         case 'O': remove |= MODE_OPERSONLY; break;
         case 'z': remove |= MODE_REGISTERED; break;
+        case 'Z': remove |= MODE_SSLONLY; break;
         }
     }