]> git.proxmox.com Git - mirror_novnc.git/commitdiff
Revert "Fixed a race condition when attaching to an existing socket"
authorPierre Ossman <ossman@cendio.se>
Fri, 16 Apr 2021 11:28:47 +0000 (13:28 +0200)
committerPierre Ossman <ossman@cendio.se>
Fri, 16 Apr 2021 11:28:47 +0000 (13:28 +0200)
This reverts commit ef27628c6dff6120b0ed0d4728cc6e8a32b7be53. By
bypassing setTimeout() it creates other race conditions so this is not
the proper fix for the issue.

core/rfb.js
docs/API.md

index f8eeb51b4e8b08b9ea184bae7625a7e352a81ed9..876255ba23439666d16918325aaf9d3c5cfb4509 100644 (file)
@@ -286,17 +286,8 @@ export default class RFB extends EventTargetMixin {
         this._sock.on('error', e => Log.Warn("WebSocket on-error event"));
 
         // Slight delay of the actual connection so that the caller has
-        // time to set up callbacks.
-        // This it not possible when a pre-existing socket is passed in and is just opened.
-        // If the caller creates this object in the open() callback of a socket and there's
-        // data pending doing it next tick causes a packet to be lost.
-        // This is particularly noticable for RTCDataChannel's where the other end creates
-        // the channel and the client, this end, gets notified it exists.
-        if (typeof urlOrChannel === 'string') {
-            setTimeout(this._updateConnectionState.bind(this, 'connecting'));
-        } else {
-            this._updateConnectionState('connecting');
-        }
+        // time to set up callbacks
+        setTimeout(this._updateConnectionState.bind(this, 'connecting'));
 
         Log.Debug("<< RFB.constructor");
 
index 81b517b13577b536091e203258922b21f34bd4bd..aa5aea7abf9d49540efeecc2198eb6d41dc41f54 100644 (file)
@@ -168,11 +168,6 @@ connection to a specified VNC server.
 **`urlOrDataChannel`**
   - A `DOMString` specifying the VNC server to connect to. This must be
     a valid WebSocket URL. This can also be a `WebSocket` or `RTCDataChannel`.
-    If a `DOMString` is supplied then the connection will be delayed until the next tick to
-    allow allow adding event listeners that fire on connection. If an existing object
-    is supplied then the connection logic happens the same tick. For instance if passing
-    in an existing open WebSocket then it will not be possible to listen for the `connect`
-    event. This is to avoid dropping data on a connection that has data as soon as its opened.
 
 **`options`** *Optional*
   - An `Object` specifying extra details about how the connection