Olaf,
The bug has been already fixed no that long ago. Thanks for pointing it
out, anyways, as it made me think that the code should probably be even
more protective:

    protected void sendData(OutputStream out) throws IOException {
        LOG.trace("enter sendData(OutputStream out)");
        if (lengthOfData() == 0) {
            
            // this file contains no data, so there is nothing to send.
            // we don't want to create a zero length buffer as this will
            // cause an infinite loop when reading.
            LOG.debug("No data to send.");
            return;
        }
        
        byte[] tmp = new byte[4096];
        InputStream instream = source.createInputStream();
        try {
            int len;
            while ((len = instream.read(tmp)) >= 0) {
                out.write(tmp, 0, len);
            }
        } finally {
            // we're done with the stream, close it
            instream.close();
        }
    }

Cheers

Oleg  

On Sat, 2003-03-15 at 17:40, [EMAIL PROTECTED] wrote:
> I send a file on the harddisk using class "FilePart" and everything works
> fine.
> But it is just a temporary file which should be deleted afterwards sending
> it, but File.delete() fails and the file remains on the disk (based on
> alpha 3). As far as I found out, the method "sendData" creates an
> inputStream from the file, but did not close it at any time, so the file is
> still locked after sending. So my fix is to close this InputStream after
> all data is send (line marked with +). I do not know if this has any side
> effects or other problems, but my problem would be fixed.
> 
> What do you think?
> 
> Regards,
> Olaf
> 
> 
>    protected void sendData(OutputStream out) throws IOException {
>       LOG.trace("enter sendData(OutputStream out)");
>       if (lengthOfData() == 0) {
> 
>        // this file contains no data, so there is nothing to send.
>        // we don't want to create a zero length buffer as this will
>        // cause an infinite loop when reading.
>        LOG.debug("No data to send.");
>        return;
>      }
> 
>      byte[] tmp = new byte[4096];
>      InputStream instream = source.createInputStream();
> 
>      int len;
>      while ((len = instream.read(tmp)) >= 0) {
>         out.write(tmp, 0, len);
>      }
> 
> +   instream.close();
>   }
> 
> 
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to