Hi all,

As Frode pointed out on the user@ list [1], the BlobReader implementation
does not automatically send the initial "ack" required for streams.
Depending on perspective, this may or may not be a bug. At the very least,
it's undocumented.

The "ack" instruction was not strictly required in the past, but it is now
required at least for file transfer due to the changes made in GUACAMOLE-44
[2].

>From the above, it's clear that there are at least two issues with the
current streaming subsystem:

1) It is not clearly documented which streams require explicit "ack"s, nor
that it's up to the guacd-side protocol implementation to require (or not
require) these "ack"s, and up to the JavaScript side to know whether to
send "ack"s.

2) The *Reader implementations in guacamole-common-js are inconsistent in
whether "ack"s are sent automatically, and that behavior is not documented
either.

Looking through the readers, the ack behavior is currently as follows:

ArrayBufferReader - does not send "ack" responses at all
BlobReader - sends "ack" responses for received "blob" instructions, but
does not send an initial "ack" for the start of the stream.
DataURIReader - does not send "ack" responses at all
JSONReader - does not send "ack" responses at all
StringReader - does not send "ack" responses at all

This protocol-level details of "ack" and the above behavior should at least
be documented, but given that sending "ack" doesn't hurt anything when not
required, I wonder if perhaps it would be better to simply have each
*Reader send automatic "ack"s by default, with an optional parameter in the
constructors for disabling that behavior.

Thoughts?

- Mike

[1]
https://lists.apache.org/thread.html/f7c733f61f6fefb3ba23a14bf9e3f6775e665789e868bf3b9d7300d4@%3Cuser.guacamole.apache.org%3E
[2] https://issues.apache.org/jira/browse/GUACAMOLE-44

---------- Forwarded message ----------
From: Frode Langelo <[email protected]>
Date: Thu, May 18, 2017 at 9:05 AM
Subject: Re: We have a problem in our guacamole client implementation such
that we are not receiving onend notification when trying to read the
guacamole stream (So printing is not working)
To: [email protected]


odonya;

Can you try sending an ack "OK" after creating the BlobReader and adding
the event handler:

guac.onfile = function clientFileReceived(stream, mimetype, filename) {
    //this is called
    var blobReader = new Guacamole.BlobReader(stream, mimetype);
    blobReader.onend = function onend() {
        //this is never called
    }
    // Send ack or the download won't start
    stream.sendAck("OK", 0x0000);
}


--Frode



On Wed, May 17, 2017 at 11:13 PM, Mike Jumper <[email protected]>
wrote:

> The only thing that would cause "onend" to not be invoked is if the "end"
> instruction for the stream is never sent (which is unlikely). If you can
> confirm that normal Guacamole downloads the file as expected, then
> something else is likely happening here.
>
> Are you positive it's not being invoked? Could there me some other reason
> that the functionality within your onend handler is not behaving as
> expected?
>
> Any errors in the browser JavaScript console?
>
> - Mike
>
>
>
> On May 17, 2017 11:14, "odonya" <[email protected]> wrote:
>
> We have a problem in our guacamole client implementation such that we are
> not
> receiving onend notification when trying to read the guacamole stream.
>
> Our code snippet looks like this
>
>                  guac = new Guacamole.Client(
>                    tunnel
>                  );
>
>             This is how we are listening on onfile when we are trying to
> print file.
>
>
>             guac.onfile = function clientFileReceived(stream, mimetype,
> filename) {
>                    //this is called
>             var blobReader = new Guacamole.BlobReader(stream, mimetype);
>                 blobReader.onend = function onend() {
>                //this is never called
> }
> }
>
>
> My question is why is onend not being called?
> I am using 0.9.12-incubating  version of guacamole.
>
>
>
>
> --
> View this message in context: http://apache-guacamole-incuba
> ting-users.2363388.n4.nabble.com/We-have-a-problem-in-our-gu
> acamole-client-implementation-such-that-we-are-not-receiving
> -onend-notifi-tp974.html
> Sent from the Apache Guacamole (incubating) - Users mailing list archive
> at Nabble.com.
>
>
>

Reply via email to