java.lang.IllegalArgumentException at java.nio.Buffer.limit(Unknown Source) at net.sf.l2j.gameserver.SelectorThread.parse(SelectorThread.java:411) at net.sf.l2j.gameserver.SelectorThread.readData(SelectorThread.java:357) at net.sf.l2j.gameserver.SelectorThread.run(SelectorThread.java:234) // no idea why this happens... // code: //411: private void parse(Connection con, ByteBuffer buf) throws Throwable { try { int sz = buf.getShort() & 0xFFFF; sz -= 2; // next line = 411 ByteBuffer b = (ByteBuffer)buf.slice().limit(sz); b.order(ByteOrder.LITTLE_ENDIAN); buf.position(buf.position()+sz); // read message fully con.decript(b); con.addReceivedMsg(b); } catch (Throwable t) { _log.log(Level.SEVERE, "", t); releaseBuffer(buf); con.readBuffer = null; throw t; } } //357: boolean parsed = false; while ((r = b.remaining()) > 2) { int sz = b.getShort(b.position()) & 0xFFFF; if (Config.ASSERT) assert sz > 0; if (sz <= b.remaining()+2) { // got full message // next line = 357 parse(con, b); parsed = true; } else { break; } } //234 // Obtain the interest of the key int readyOps = sk.readyOps(); switch (readyOps) { case SelectionKey.OP_WRITE: writeData(sk); break; case SelectionKey.OP_READ: // next line = 234 readData(sk); break;