Selaa lähdekoodia

Fix some INSPIRCD list mode parsing

Change-Id: I88eee521770db9ec756a9c18c28f935cdbdc19d7
Reviewed-on: http://gerrit.dmdirc.com/2542
Reviewed-by: Greg Holmes <greg@dmdirc.com>
Automatic-Compile: DMDirc Build Manager
tags/0.7rc1
Shane Mc Cormack 11 vuotta sitten
vanhempi
commit
55b49488c9
1 muutettua tiedostoa jossa 18 lisäystä ja 1 poistoa
  1. 18
    1
      src/com/dmdirc/parser/irc/ProcessListModes.java

+ 18
- 1
src/com/dmdirc/parser/irc/ProcessListModes.java Näytä tiedosto

26
 import com.dmdirc.parser.interfaces.ChannelInfo;
26
 import com.dmdirc.parser.interfaces.ChannelInfo;
27
 import com.dmdirc.parser.interfaces.callbacks.ChannelListModeListener;
27
 import com.dmdirc.parser.interfaces.callbacks.ChannelListModeListener;
28
 
28
 
29
+import java.util.Arrays;
29
 import java.util.Collection;
30
 import java.util.Collection;
30
 import java.util.LinkedList;
31
 import java.util.LinkedList;
31
 import java.util.Queue;
32
 import java.util.Queue;
60
         byte tokenStart = 4; // Where do the relevent tokens start?
61
         byte tokenStart = 4; // Where do the relevent tokens start?
61
         boolean isCleverMode = false;
62
         boolean isCleverMode = false;
62
         long time = 0;
63
         long time = 0;
63
-        char mode = 'b';
64
+        char mode = ' ';
64
         boolean isItem = true; // true if item listing, false if "end of .." item
65
         boolean isItem = true; // true if item listing, false if "end of .." item
65
         if (channel == null) {
66
         if (channel == null) {
66
             return;
67
             return;
84
             // Censored words List
85
             // Censored words List
85
             mode = 'g';
86
             mode = 'g';
86
             isItem = sParam.equals("941");
87
             isItem = sParam.equals("941");
88
+        } else if ((serverType == ServerType.INSPIRCD) && (sParam.equals("910") || sParam.equals("911"))) {
89
+            // Channel Access List
90
+            mode = 'w';
91
+            isItem = sParam.equals("910");
92
+        } else if ((serverType == ServerType.INSPIRCD) && (sParam.equals("954") || sParam.equals("953"))) {
93
+            // Channel exemptchanops List
94
+            mode = 'X';
95
+            isItem = sParam.equals("954");
87
         } else if (sParam.equals("344") || sParam.equals("345")) {
96
         } else if (sParam.equals("344") || sParam.equals("345")) {
88
             // Reop List, or bad words list, or quiet list. god damn.
97
             // Reop List, or bad words list, or quiet list. god damn.
89
             if (serverType == ServerType.EUIRCD) {
98
             if (serverType == ServerType.EUIRCD) {
112
             isCleverMode = true;
121
             isCleverMode = true;
113
         }
122
         }
114
 
123
 
124
+        // Unknown mode.
125
+        if (mode == ' ') {
126
+            parser.callDebugInfo(IRCParser.DEBUG_LMQ, "Unknown mode line: " + Arrays.toString(token));
127
+            return;
128
+        }
129
+
115
         final Queue<Character> listModeQueue = channel.getListModeQueue();
130
         final Queue<Character> listModeQueue = channel.getListModeQueue();
116
         if (!isCleverMode && listModeQueue != null) {
131
         if (!isCleverMode && listModeQueue != null) {
117
             if ("482".equals(sParam)) {
132
             if ("482".equals(sParam)) {
257
                     "386", "387", /* Channel Owner List (swiftirc ) */
272
                     "386", "387", /* Channel Owner List (swiftirc ) */
258
                     "388", "389", /* Protected User List (swiftirc) */
273
                     "388", "389", /* Protected User List (swiftirc) */
259
                     "940", "941", /* Censored words list */
274
                     "940", "941", /* Censored words list */
275
+                    "910", "911", /* INSPIRCD Channel Access List. */
276
+                    "954", "953", /* INSPIRCD exemptchanops List. */
260
                     "482", /* Permission Denied */
277
                     "482", /* Permission Denied */
261
                     "__LISTMODE__" /* Sensible List Modes */};
278
                     "__LISTMODE__" /* Sensible List Modes */};
262
     }
279
     }

Loading…
Peruuta
Tallenna