[Bug 12510] New: race condition: open before setting onopen

http://www.w3.org/Bugs/Public/show_bug.cgi?id=12510

           Summary: race condition: open before setting onopen
           Product: WebAppsWG
           Version: unspecified
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: WebSocket API (editor: Ian Hickson)
        AssignedTo: ian@hixie.ch
        ReportedBy: glenn@skynav.com
         QAContact: member-webapi-cvs@w3.org
                CC: mike@w3.org, public-webapps@w3.org


As presently defined, WebSocket may establish a connection before onopen is
set. Using the example found in Section 4:

var socket = new WebSocket('ws://game.example.com:12010/updates');
socket.onopen = function () {
  setInterval(function() {
    if (socket.bufferedAmount == 0)
      socket.send(getUpdateData());
  }, 50);
};

In this case, the new websocket may transition to OPEN state prior to execution
of the statement that sets the onopen property. For instance, this may occur
when stepping through this JS code in a JS debugger, or when GC occurs between
the constructor and the following statement.

The WS API should be modified to separate construction from opening, e..g.,
following a paradigm similar to XHR in which case the above example would
become:

var socket = new WebSocket();
socket.onopen = function () {
  setInterval(function() {
    if (socket.bufferedAmount == 0)
      socket.send(getUpdateData());
  }, 50);
};
socket.open('ws://game.example.com:12010/updates');

Regards,
Glenn Adams

-- 
Configure bugmail: http://www.w3.org/Bugs/Public/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.

Received on Saturday, 16 April 2011 02:11:11 UTC