1. 09 May, 2017 2 commits
  2. 24 Apr, 2017 1 commit
  3. 04 Apr, 2017 2 commits
  4. 03 Apr, 2017 1 commit
    • Markus Armbruster's avatar
      io vnc sockets: Clean up SocketAddressKind switches · a6c76285
      Markus Armbruster authored
      We have quite a few switches over SocketAddressKind.  Some have case
      labels for all enumeration values, others rely on a default label.
      Some abort when the value isn't a valid SocketAddressKind, others
      report an error then.
      
      Unify as follows.  Always provide case labels for all enumeration
      values, to clarify intent.  Abort when the value isn't a valid
      SocketAddressKind, because the program state is messed up then.
      
      Improve a few error messages while there.
      Signed-off-by: 's avatarMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: 's avatarMax Reitz <mreitz@redhat.com>
      Message-id: 1490895797-29094-4-git-send-email-armbru@redhat.com
      Signed-off-by: 's avatarMax Reitz <mreitz@redhat.com>
      a6c76285
  5. 28 Feb, 2017 2 commits
    • Daniel P. Berrange's avatar
      io: fully parse & validate HTTP headers for websocket protocol handshake · 07e95cd5
      Daniel P. Berrange authored
      The current websockets protocol handshake code is very relaxed, just
      doing crude string searching across the HTTP header data. This causes
      it to both reject valid connections and fail to reject invalid
      connections. For example, according to the RFC 6455 it:
      
       - MUST reject any method other than "GET"
       - MUST reject any HTTP version less than "HTTP/1.1"
       - MUST reject Connection header without "Upgrade" listed
       - MUST reject Upgrade header which is not 'websocket'
       - MUST reject missing Host header
       - MUST treat HTTP header names as case insensitive
      
      To do all this validation correctly requires that we fully parse the
      HTTP headers, populating a data structure containing the header
      fields.
      
      After this change, we also reject any path other than '/'
      Signed-off-by: 's avatarDaniel P. Berrange <berrange@redhat.com>
      07e95cd5
    • Daniel P. Berrange's avatar
      io: fix decoding when multiple websockets frames arrive at once · cd892a2e
      Daniel P. Berrange authored
      The qio_channel_websock_read_wire() method will read upto 4096
      bytes off the socket and then decode the websockets header and
      payload. The code was only decoding a single websockets frame,
      even if the buffered data contained multiple frames. This meant
      that decoding of subsequent frames was delayed until further
      input arrived on the socket. This backlog of delayed frames
      gets worse & worse over time.
      
      Symptom was that when connecting to the VNC server via the
      built-in websockets server, mouse/keyboard interaction would
      start out fine, but slowly get more & more delayed until it
      was unusable.
      Signed-off-by: 's avatarDaniel P. Berrange <berrange@redhat.com>
      cd892a2e
  6. 21 Feb, 2017 2 commits
  7. 26 Jan, 2017 1 commit
  8. 23 Jan, 2017 6 commits
  9. 27 Oct, 2016 2 commits
  10. 26 Oct, 2016 3 commits
  11. 28 Sep, 2016 1 commit
  12. 12 Aug, 2016 1 commit
  13. 03 Aug, 2016 1 commit
  14. 13 Jul, 2016 1 commit
    • Paolo Bonzini's avatar
      coroutine: move entry argument to qemu_coroutine_create · 0b8b8753
      Paolo Bonzini authored
      In practice the entry argument is always known at creation time, and
      it is confusing that sometimes qemu_coroutine_enter is used with a
      non-NULL argument to re-enter a coroutine (this happens in
      block/sheepdog.c and tests/test-coroutine.c).  So pass the opaque value
      at creation time, for consistency with e.g. aio_bh_new.
      
      Mostly done with the following semantic patch:
      
      @ entry1 @
      expression entry, arg, co;
      @@
      - co = qemu_coroutine_create(entry);
      + co = qemu_coroutine_create(entry, arg);
        ...
      - qemu_coroutine_enter(co, arg);
      + qemu_coroutine_enter(co);
      
      @ entry2 @
      expression entry, arg;
      identifier co;
      @@
      - Coroutine *co = qemu_coroutine_create(entry);
      + Coroutine *co = qemu_coroutine_create(entry, arg);
        ...
      - qemu_coroutine_enter(co, arg);
      + qemu_coroutine_enter(co);
      
      @ entry3 @
      expression entry, arg;
      @@
      - qemu_coroutine_enter(qemu_coroutine_create(entry), arg);
      + qemu_coroutine_enter(qemu_coroutine_create(entry, arg));
      
      @ reentry @
      expression co;
      @@
      - qemu_coroutine_enter(co, NULL);
      + qemu_coroutine_enter(co);
      
      except for the aforementioned few places where the semantic patch
      stumbled (as expected) and for test_co_queue, which would otherwise
      produce an uninitialized variable warning.
      Signed-off-by: 's avatarPaolo Bonzini <pbonzini@redhat.com>
      Reviewed-by: 's avatarFam Zheng <famz@redhat.com>
      Signed-off-by: 's avatarKevin Wolf <kwolf@redhat.com>
      0b8b8753
  15. 06 Jul, 2016 1 commit
  16. 29 Jun, 2016 2 commits
  17. 20 Jun, 2016 1 commit
  18. 26 May, 2016 1 commit
  19. 19 May, 2016 1 commit
  20. 22 Mar, 2016 1 commit
    • Markus Armbruster's avatar
      include/qemu/osdep.h: Don't include qapi/error.h · da34e65c
      Markus Armbruster authored
      Commit 57cb38b3 included qapi/error.h into qemu/osdep.h to get the
      Error typedef.  Since then, we've moved to include qemu/osdep.h
      everywhere.  Its file comment explains: "To avoid getting into
      possible circular include dependencies, this file should not include
      any other QEMU headers, with the exceptions of config-host.h,
      compiler.h, os-posix.h and os-win32.h, all of which are doing a
      similar job to this file and are under similar constraints."
      qapi/error.h doesn't do a similar job, and it doesn't adhere to
      similar constraints: it includes qapi-types.h.  That's in excess of
      100KiB of crap most .c files don't actually need.
      
      Add the typedef to qemu/typedefs.h, and include that instead of
      qapi/error.h.  Include qapi/error.h in .c files that need it and don't
      get it now.  Include qapi-types.h in qom/object.h for uint16List.
      
      Update scripts/clean-includes accordingly.  Update it further to match
      reality: replace config.h by config-target.h, add sysemu/os-posix.h,
      sysemu/os-win32.h.  Update the list of includes in the qemu/osdep.h
      comment quoted above similarly.
      
      This reduces the number of objects depending on qapi/error.h from "all
      of them" to less than a third.  Unfortunately, the number depending on
      qapi-types.h shrinks only a little.  More work is needed for that one.
      Signed-off-by: 's avatarMarkus Armbruster <armbru@redhat.com>
      [Fix compilation without the spice devel packages. - Paolo]
      Signed-off-by: 's avatarPaolo Bonzini <pbonzini@redhat.com>
      da34e65c
  21. 10 Mar, 2016 7 commits