diff --git a/src/java/org/jivesoftware/multiplexer/net/XMLLightweightParser.java b/src/java/org/jivesoftware/multiplexer/net/XMLLightweightParser.java index ad018f7..632e259 100644 --- a/src/java/org/jivesoftware/multiplexer/net/XMLLightweightParser.java +++ b/src/java/org/jivesoftware/multiplexer/net/XMLLightweightParser.java @@ -156,6 +156,14 @@ char[] buf = charBuffer.array(); buffer.append(buf); + // Do nothing if the buffer only contains white spaces + if (buffer.charAt(0) <= ' ' && buffer.charAt(buffer.length()-1) <= ' ') { + if ("".equals(buffer.toString().trim())) { + // Empty the buffer so there is no memory leak + buffer.delete(0, buffer.length()); + return; + } + } // Robot. char ch; for (int i = 0; i < readByte; i++) { diff --git a/src/java/org/jivesoftware/multiplexer/net/XMPPDecoder.java b/src/java/org/jivesoftware/multiplexer/net/XMPPDecoder.java index 8bb09c1..3d1fe97 100644 --- a/src/java/org/jivesoftware/multiplexer/net/XMPPDecoder.java +++ b/src/java/org/jivesoftware/multiplexer/net/XMPPDecoder.java @@ -26,12 +26,8 @@ protected boolean doDecode(IoSession session, ByteBuffer in, ProtocolDecoderOutput out) throws Exception { - if (in.remaining() < 4) { - return false; - } // Get the XML light parser from the IoSession - XMLLightweightParser parser = - (XMLLightweightParser) session.getAttribute(ConnectionHandler.XML_PARSER); + XMLLightweightParser parser = (XMLLightweightParser) session.getAttribute(ConnectionHandler.XML_PARSER); // Parse as many stanzas as possible from the received data parser.read(in);