Hi Janne,

Very nice catch! Fix applied in SVN trunk and 1.1 branch :)

Best regards,
Jerome Louvel
--
Restlet ~ Founder and Lead developer ~ http://www.restlet.org
Noelios Technologies ~ Co-founder ~ http://www.noelios.com


-----Message d'origine-----
De : Janne Husberg [mailto:[email protected]] 
Envoye : samedi 31 janvier 2009 01:00
A : [email protected]
Objet : ReadableRepresentation's channel not closed

Hello,

I've been streaming data using a ReadableRepresentation sourced from a nio Pipe 
with the sink attached to a writer thread, but
couldn't get the sink end of the pipe to close upon a client's disconnect.

ReadableRepresentation seems to set its reference to the ReadableByteChannel to 
null in getChannel() so the entity's release in the
finally block in HttpServerCall's sendResponse never closes the channel (which 
would be needed to trigger an IOException when
writing to the Pipe's sink so I could detect a disconnect).

Is this intended behaviour or would it be possible to not null the reference so 
the channel would close?

Thanks, 
Janne Husberg.

Patched ReadableRepresentation.java (1.2M1/SVN r4163):
    @Override
    public ReadableByteChannel getChannel() throws IOException {
        final ReadableByteChannel result = this.channel;
//        this.channel = null;
        setAvailable(false);
        return result;
    }

    /**
     * Closes and releases the readable channel.
     */
    @Override
    public void release() {
        if (this.channel != null) {
            try {
                this.channel.close();
            } catch (IOException e) {
                Context.getCurrentLogger().log(Level.WARNING,
                        "Error while releasing the representation.", e);
            }

            this.channel = null;
        }
        super.release();
    }

------------------------------------------------------
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=1077335

------------------------------------------------------
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=1079829

Reply via email to