[Spice-devel] [spice-html5] Ack every message.

Jeremy White jwhite at codeweavers.com
Tue Aug 27 15:51:32 PDT 2013


The failure to ack pings led to a nasty bug whereby an inactive client hangs.
The relatively recent change to monitor latency with ping exposed this bug.

Signed-off-by: Jeremy White <jwhite at codeweavers.com>
---
  spiceconn.js |   20 +++++++++-----------
  1 file changed, 9 insertions(+), 11 deletions(-)

diff --git a/spiceconn.js b/spiceconn.js
index 494810e..318e9ae 100644
--- a/spiceconn.js
+++ b/spiceconn.js
@@ -318,20 +318,18 @@ SpiceConn.prototype =
          var rc;
          DEBUG > 0 && console.log("<< hdr " + this.channel_type() + " type " + msg.type + " size " + (msg.data && msg.data.byteLength));
          rc = this.process_common_messages(msg);
-        if (rc)
-            return rc;
-
-        if (this.process_channel_message)
-            rc = this.process_channel_message(msg);
-        else
+        if (! rc)
          {
-            this.log_err(this.type + ": No message handlers for this channel; message " + msg.type);
-            return false;
+            if (this.process_channel_message)
+            {
+                rc = this.process_channel_message(msg);
+                if (! rc)
+                    this.log_warn(this.type + ": Unknown message type " + msg.type + "!");
+            }
+            else
+                this.log_err(this.type + ": No message handlers for this channel; message " + msg.type);
          }
  
-        if (! rc)
-            this.log_warn(this.type + ": Unknown message type " + msg.type + "!");
-
          if (this.msgs_until_ack !== undefined && this.ack_window)
          {
              this.msgs_until_ack--;
-- 
1.7.10.4



More information about the Spice-devel mailing list