StreamIoHandler can flush garbled data.
---------------------------------------

                 Key: DIRMINA-369
                 URL: https://issues.apache.org/jira/browse/DIRMINA-369
             Project: MINA
          Issue Type: Bug
          Components: Handler
    Affects Versions: 1.1.0, 1.0.3, 1.0.2, 1.0.1
            Reporter: Trustin Lee
         Assigned To: Trustin Lee
             Fix For: 1.0.4, 1.1.1


The OutputStream which StreamIoHandler provided doesn't perform defensive copy. 
 Some wrapper OutputStreams and Writers (e.g. BufferedOutputStream and 
BufferedWriter) reuse their internal byte array, and causes the byte buffer to 
be modified before it's actually written out to the channel.  There are two 
solutions:

1) Perform defensive copy in write(byte[], int, int): 

    public void write( byte[] b, int off, int len ) throws IOException
    {
        write( ByteBuffer.wrap( (byte[]) b.clone(), off, len ) );
    }

2) Wait for the WriteFuture for every operation.

The former sounds better IMO.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to