1. 15 Sep, 2010 2 commits
    • Joel Martin's avatar
      API change: add sendKey() to manually send key code. · 0a1184bd
      Joel Martin authored
      RFB.sendKey(code, down)
      
      If down is not specified then both a down followed by an up code will
      be sent.
      0a1184bd
    • Joel Martin's avatar
      proxy: Issue #14: detect and allow wss:// from Safari. · 7e63919e
      Joel Martin authored
      Addresses this issue:
      http://github.com/kanaka/noVNC/issues#issue/14
      
      Safari starts with '\x80' rather than '\x16' like Chrome and Firefox
      and having PROTOCOL_TLSv1 doesn't work with Safari. But just removing
      the ssl_version allows things to work with Safari wss:// connections.
      
      Also, if the handshake (after SSL wrapping) is null then terminate the
      connection. This probably means the certificate was refused by the
      client. Unfortunately Safari (the version I have) doesn't cleanly
      shutdown WebSockets connections until the page is reloaded (even if
      the object is no longer referenced).
      7e63919e
  2. 11 Sep, 2010 4 commits
    • Joel Martin's avatar
      rfb.js: state refactor, add 'disconnect' state. · e3efeb32
      Joel Martin authored
      Add a new state 'disconnect' to reflect that we are not truly
      'disconnected' until we get an onclose event. Add a disconnect timer
      to match.
      
      Handle disconnected cleanup better in updateState(). Anytime we enter
      in a disconnect/disconnected state, make sure all running state is
      cleaned up (WebSocket, timers, canvas).
      e3efeb32
    • Joel Martin's avatar
      proxy: always multiprocess and add --verbose. · cc374cd6
      Joel Martin authored
      Always fork handlers processes. Instead printing traffic when
      single-processing, print traffic if verbose flag given.
      cc374cd6
    • Joel Martin's avatar
      web-socket-js (issue #37): close() when connecting · ac7bdbc2
      Joel Martin authored
      Filed this issue for this bug:
      http://github.com/gimite/web-socket-js/issues/issue/37
      
      Right now the close() call only calls __flash.close() if readyState is OPEN.
      But it should really call close any time that readyState is not CLOSED or
      CLOSING.
      
      The case I ran into is when I want to do the following:
      1. make a test connection
      2. tell the server to setup for a connection
      3. connect again
      
      I call close on the test connection, but since it is ignored when CONNECTING,
      it eventually times out with a error. But by that time I have already issued a
      new connection, it causes the new connection to fail. close() should cancel
      CONNECTING state too.
      ac7bdbc2
    • Joel Martin's avatar
      gimite/web-socket-js issue #35: async onclose. · 071f2818
      Joel Martin authored
      Filed this bug about this issue:
      http://github.com/gimite/web-socket-js/issues#issue/35
      
      To work around the flash "recursive call" problem, WebSocket.as has
      the onclose event disabled in the close() call and the javascript half
      of the close() call does the onclose() call instead. This is fine, but
      it needs to be asynchronous to act more like what happens with
      a normal WebSockets object. The current behavior is that the onclose()
      method is called inline (synchronously) when the close() is called and
      this inconsistency make state handling more difficult.
      071f2818
  3. 10 Sep, 2010 3 commits
    • Joel Martin's avatar
      proxy: do handshake in forked process too. · edc47252
      Joel Martin authored
      edc47252
    • Joel Martin's avatar
      wsproxy: multiprocess capable. · a0315ab1
      Joel Martin authored
      Add -m, --multiprocess option which forks a handler for each
      connection allowing multiple connections to the same target using the
      same proxy instance.
      
      Cleaned up the output of the handler process. Each process' output is
      prefixed with an ordinal value.
      
      Changed both the C and python versions of the proxy.
      a0315ab1
    • Joel Martin's avatar
      Remove record option from C wsproxy. · 465faf19
      Joel Martin authored
      I've decided that debug/develop/extra features will just be in the
      python version of the proxy. The C version (and other versions) will
      just have the core functionality (unless someone wants to support it).
      465faf19
  4. 08 Sep, 2010 5 commits
  5. 07 Sep, 2010 2 commits
  6. 01 Sep, 2010 3 commits
  7. 31 Aug, 2010 2 commits
  8. 30 Aug, 2010 3 commits
  9. 27 Aug, 2010 3 commits
  10. 26 Aug, 2010 2 commits
    • Joel Martin's avatar
      Test both builtin and base64.js functions. · 4ff85f49
      Joel Martin authored
      4ff85f49
    • Joel Martin's avatar
      Indexed receive queue. Up to 2X speedup in Chrome. · 67b4e987
      Joel Martin authored
      Generally, most servers send hextile updates as single updates
      containing many rects. Some servers send hextile updates as many small
      framebuffer updates with a few rects each (such as QEMU). This latter
      cases revealed that shifting off the beginning of the receive queue
      (which happens after each hextile FBU) performs poorly.
      
      This change switches to using an indexed receive queue (instead of
      actually shifting off the array). When the receive queue has grown to
      a certain size, then it is compacted all at once.
      
      The code is not as clean, but this change results in more than 2X
      speedup under Chrome for the pessimal case and 10-20% in firefox.
      67b4e987
  11. 12 Aug, 2010 1 commit
  12. 11 Aug, 2010 1 commit
    • Joel Martin's avatar
      Treat RFB 3.6 as 3.3. · 1a5dd77d
      Joel Martin authored
      Apparently there are versions of UltraVNC that report version 3.6.
      This is not a legal version according to the spec, but we'll just
      force version 3.3 if we receive it. Thanks to Larry Rowe for the info.
      1a5dd77d
  13. 06 Aug, 2010 1 commit
    • Joel Martin's avatar
      Scroll render test and perf speedup. · 4ed717ad
      Joel Martin authored
      Turns out when Windows is running in QEMU and a window scroll happens,
      there are lots of little hextile rects sent. This is slow in noVNC.
      
      - Some recording/playback improvement.
      - Add test harness to drive playback of recordings.
      - By pulling off the rect header in one chunk we get a 3X speedup in
        Chrome and a 20% speedup in firefox (specifically for the scroll
        test).
      - Also, get rid of some noise from creating timers for handle_message.
        Check to make sure there isn't already a pending timer first.
      4ed717ad
  14. 04 Aug, 2010 6 commits
  15. 03 Aug, 2010 2 commits