diff --git a/src/net/java/sip/communicator/impl/protocol/irc/Mode.java b/src/net/java/sip/communicator/impl/protocol/irc/Mode.java index 0e92e6fa0..a7509f11a 100644 --- a/src/net/java/sip/communicator/impl/protocol/irc/Mode.java +++ b/src/net/java/sip/communicator/impl/protocol/irc/Mode.java @@ -22,7 +22,8 @@ public enum Mode LIMIT('l', null), PRIVATE('p', null), SECRET('s', null), - INVITE('i', null); + INVITE('i', null), + BAN('b', null); /** * Find Mode instance by mode char. diff --git a/src/net/java/sip/communicator/impl/protocol/irc/ModeParser.java b/src/net/java/sip/communicator/impl/protocol/irc/ModeParser.java index 48493f2fb..78a1b3bbd 100644 --- a/src/net/java/sip/communicator/impl/protocol/irc/ModeParser.java +++ b/src/net/java/sip/communicator/impl/protocol/irc/ModeParser.java @@ -105,15 +105,21 @@ private ModeEntry process(boolean add, char mode) case 'v': return new ModeEntry(add, Mode.VOICE, this.params[this.index++]); case 'l': - String[] params = (add ? new String[] - { this.params[this.index++] } : new String[] {}); - return new ModeEntry(add, Mode.LIMIT, params); + String[] limitparams; + if (add) + limitparams = new String[] + { this.params[this.index++] }; + else + limitparams = new String[] {}; + return new ModeEntry(add, Mode.LIMIT, limitparams); case 'p': return new ModeEntry(add, Mode.PRIVATE); case 's': return new ModeEntry(add, Mode.SECRET); case 'i': return new ModeEntry(add, Mode.INVITE); + case 'b': + return new ModeEntry(add, Mode.BAN, this.params[this.index++]); default: return new ModeEntry(add, Mode.UNKNOWN, ""+mode); } diff --git a/test/net/java/sip/communicator/impl/protocol/irc/ModeParserTest.java b/test/net/java/sip/communicator/impl/protocol/irc/ModeParserTest.java index ebc6dc542..eddf06645 100644 --- a/test/net/java/sip/communicator/impl/protocol/irc/ModeParserTest.java +++ b/test/net/java/sip/communicator/impl/protocol/irc/ModeParserTest.java @@ -195,6 +195,19 @@ public void testModeInvite() Assert.assertEquals(0, modes.get(0).getParams().length); } + public void testModeBan() + { + ModeParser parser = new ModeParser("+b *!*@some-ip.dynamicIP.provider.net"); + List modes = parser.getModes(); + Assert.assertNotNull(modes); + Assert.assertEquals(1, modes.size()); + ModeEntry entry = modes.get(0); + Assert.assertTrue(entry instanceof ModeEntry); + Assert.assertEquals(Mode.BAN, entry.getMode()); + Assert.assertEquals(1, entry.getParams().length); + Assert.assertEquals("*!*@some-ip.dynamicIP.provider.net", entry.getParams()[0]); + } + protected void tearDown() throws Exception { super.tearDown();