summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* Revert "server: add websockets support via libwebsockets"Alon Levy2012-11-0410-471/+32
| | | | This reverts commit 63bb37276e028ab1b1c156c9e7907bf22b6d5952.
* update spice-common (was broken)Alon Levy2012-11-041-0/+0
|
* server/red_worker: don't call set_client_capabilities if vm is stoppedAlon Levy2012-11-011-18/+46
| | | | | | | | | We try to inject an interrupt to the vm in this case, which we cannot do if it is stopped. Instead log this and update when vm restarts. RHBZ: https://bugzilla.redhat.com/show_bug.cgi?id=870972 (that bz is on qemu, it will be cloned or just changed, not sure yet)
* server/red_worker: wip: VALIDATE_SURFACE macros, remove asserts (but too ↵Alon Levy2012-10-251-12/+50
| | | | late - should be done earlier)
* release 0.12.1Alon Levy2012-10-252-3/+3
|
* server: add websockets support via libwebsocketsAlon Levy2012-10-2510-32/+471
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | New API: spice_server_set_ws_ports This adds an optional dependency on libwebsockets. You need to get my patched 0.0.3 version here: git://people.freedesktop.org/~alon/libwebsockets There is no qemu patches yet, to test change in reds.c the default value of spice_ws_port to 5959 (for the default of spice-html5). For testing there is an online client at http://spice-space.org/spice-html5/spice.html Known issues: 1. The tester (server/tests/test_display_no_ssl) gets into dropping all data after a few seconds, I think it's an issue with the implemented watches, but haven't figured it out. 2. libwebsocket's read interface is inverted to what our code expects, i.e. there is no libwebsocket_read, so there is an additional copy involved (see RedsWebSocket). This can be fixed. 3. Listening on a separate port. Since the headers are different, we could listen on the same port (first three bytes RED/GET). I don't know if we want to? Todos: 1. SSL not implemented yet. Needs some thought as to how. 2. Serve spice-html5 when accessed as a http server. Nice to have.
* server/red_worker: stride > 0 is tested, remove abortAlon Levy2012-10-251-3/+0
| | | | Tested using the wip driver and xf86-video-modesetting.
* server/tests/test_display_base: fix segfault in testAlon Levy2012-10-251-1/+5
|
* server/reds.c: split off reds-private.hAlon Levy2012-10-252-176/+186
|
* configure.ac: add libcacard to SPICE_REQUIRES if built with smartcard supportAlon Levy2012-10-251-0/+1
|
* update spice-commonAlon Levy2012-10-251-0/+0
|
* server: red_dispatcher: check major/minor of qxl for client_monitors_configUri Lublin2012-10-241-14/+7
| | | | | | | | This solves a problem with new spice-server and old qemu-kvm, where spice thinks qif->client_monitors_config exists, while it does not exist in qemu-kvm. Also "major > required_major" was added to the condition. Also only the specific RedDispatcher is checked (and not all dispatchers).
* add git-version-gen and gitlog-to-changelogAlon Levy2012-10-195-11/+385
|
* inputs_channel: Fix wrong handling of key up/down on big endianHans de Goede2012-10-181-5/+7
| | | | | | | | | The client will send 0x000000## codes for regular keys, and 0x0000##e0 codes for extended keys. The current code which simply walks the uint32_t code in memory order relies on the memory order being little endian, which will clearly fail on big endian machines, this fixes this. Signed-off-by: Hans de Goede <hdegoede@redhat.com>
* snd channel: fix accessing freed memoryYonit Halperin2012-10-111-2/+2
| | | | | snd_channel_put freed "channel", and then channel->worker was accessed. It caused segmentation faults during connections and disconnections of the client.
* Fix PlaybackChannel forward declarationChristophe Fergeau2012-10-011-3/+2
| | | | | | | This caused a jenkins build failure: snd_worker.c:148: error: redefinition of typedef 'PlaybackChannel' snd_worker.c:126: note: previous declaration of 'PlaybackChannel' was here
* server: Access the correct SndChannel for a given AudioFrameAndrew Eikum2012-10-011-5/+11
| | | | | | The client of _get_buffer() holds a ref to the SndChannel, and we should access that SndChannel when _put_samples() is called, not the one that happens to currently be attached to the Interface.
* server: Don't release SndChannel twice from worker referenceAndrew Eikum2012-10-011-1/+1
| | | | | | | | When we release the SndChannel reference during snd_disconnect_channel(), we need to set the pointer to NULL so it doesn't get released again on client reconnect during snd_set_playback_peer(). This can happen when a reference is held from _playback_get_buffer().
* reds: Report an error when reds_char_device_add_state failsChristophe Fergeau2012-09-201-0/+1
| | | | | | This used to abort with spice_error. The caller currently does not check spice_server_char_device_add_interface return value, but it's still cleaner to report an error in this case.
* reds: Check errors returned from SSL_CTX_set_cipher_listChristophe Fergeau2012-09-201-1/+3
|
* reds: Report errors from load_dh_paramsChristophe Fergeau2012-09-201-3/+10
|
* reds: Check reds_init_ssl errorsChristophe Fergeau2012-09-201-1/+3
| | | | | | Now that this function can fail, propagate any error up to the caller. This allows qemu to fail when an SSL initialization error occurred.
* reds: report SSL initialization errorsChristophe Fergeau2012-09-201-1/+7
| | | | | | | | | Errors occurring in reds_init_ssl used to be fatal through the use of spice_error, but this was downgraded to non-fatal spice_warning calls recently. This means we no longer error out when invalid SSL (certificates, ...) parameters are passed by the user. This commit changes reds_init_ssl return value from void to int so that errors can be reported to the caller.
* reds_init_net: report errors on watch setup failuresChristophe Fergeau2012-09-201-0/+3
| | | | | | | | | | We used to be aborting in such situations, but this was changed during the big spice_error/printerr cleanup. We are currently outputting a warning but not reporting the error with the caller when reds_init_net fails to register listening watches with the mainloop. As it's unlikely that things will work as expected in such cases, better to error out of the function instead of pretending everything is all right.
* reds: Abort on BN-new failuresChristophe Fergeau2012-09-201-1/+1
| | | | | | | BN_new returns NULL on allocation failures. Given that we abort on malloc allocation failures, we should also abort here. The current code will segfault when BN_new fails as it immediatly tries to use the NULL pointer.
* Release 0.12.0v0.12.00.12.0Alon Levy2012-09-153-3/+15
|
* server/spice-server.syms: add missing global labelsAlon Levy2012-09-131-0/+3
| | | | Although global is the default, this makes the file more consistent.
* server/Makefile.am: fix for make distcheckAlon Levy2012-09-131-1/+1
| | | | | Doesn't make sense to distribute test_spice_version.sh, so just ensure the build passes if it doesn't exist.
* spice-server 0.11.5Alon Levy2012-09-132-4/+4
| | | | | | Added api: QXL interface (3.2) client_monitors_config
* server/tests: agent mock, client_monitors_configAlon Levy2012-09-134-1/+49
|
* server: Filter VD_AGENT_MONITORS_CONFIGAlon Levy2012-09-133-1/+61
| | | | | | If the guest supports client monitors config we pass it the VDAgentMonitorsConfig message via the QXLInterface::client_monitors_config api instead of via the vdagent.
* server/reds: reuse already defined localAlon Levy2012-09-131-1/+1
|
* server/red_dispatcher: client_monitors_config supportAlon Levy2012-09-132-0/+53
| | | | | | | | | Adds two functions: - red_dispatcher_use_client_monitors_config: check that QXLInterface supports client_monitors_config and that it's functional. - red_dispatcher_client_monitors_config: send the client monitors configuration to the guest.
* server: add QXLInterface::client_monitors_configAlon Levy2012-09-131-3/+9
| | | | | | | | | | | | | | | | | | | | | | Used to implement guest monitor configuration change similarly to real hardware in conjunction with the new qemu interrupt QXL_INTERRUPT_CLIENT_MONITORS_CONFIG. client_monitors_config is also used to probe the support by the interface. If it is not supported we send the message to the guest agent. This makes a linux qxl driver similar to existing kms drivers. The logic is: For every received VDAgentMonitorsConfig: if client_monitors_config(NULL): write client configuration to pci rom BAR. send interrupt to guest guest kernel reads configuration from rom BAR. guest kernel issues event to user space user space reads (libdrm) and reconfigures (libXRandr) else: (current implementation) write message to guest agent guest agent issues reconfiguration via XRandr / windows Escape ioctl to kernel
* update spice-common moduleAlon Levy2012-09-131-0/+0
| | | | For qxl client_monitors_config support.
* server/red_dispatcher: change a printerr to debugAlon Levy2012-09-121-1/+1
|
* Bump SPICE_INTERFACE_QXL_VERSION_MINORSøren Sandmann Pedersen2012-09-112-3/+7
| | | | | Then check that we have the right version before accessing the set_client_capabilities() function.
* Enable build on armv6+Peter Robinson2012-09-111-2/+2
| | | | | | | | | The following patch enables it to build on ARM platforms that support atomics. Tested on an armv7hl on an ARMv7 device running Fedora 18. Using firefox connecting to a RHEV-M instance I could launch consoles in spice-xpi and login so basic support works! Resolves: rhbz#613529
* Update spice-common to get A8 surface definitionsChristophe Fergeau2012-09-101-0/+0
| | | | Latest spice needs these definitions from spice-protocol
* Bump spice.h version number to 0.11.4Søren Sandmann Pedersen2012-09-071-1/+1
| | | | | | | | No new symbols are added, but there is an addition to QXLInterface: void (*set_client_capabilities)(QXLInstance *qin, uint8_t client_present, uint8_t caps[58]);
* Set a8 capability in the QXL device if supported by the clientSøren Sandmann Pedersen2012-09-071-0/+2
|
* Process outstanding commands in the ring after changing capability bitsSøren Sandmann Pedersen2012-09-071-0/+5
| | | | | | | | | | | When a new client connects, there may be commands in the ring that it can't understand, so we need to process these before forwarding new commands to the client. By doing this after changing the capability bits we ensure that the new client will never see a command that it doesn't understand (under the assumption that the guest will read and obey the capability bits). Acked-by: Alon Levy <alonl@redhat.com>
* Add new set_client_capabilities() interface to QXLInstanceSøren Sandmann Pedersen2012-09-062-0/+27
| | | | | | | | | | | | | | | | | | | | | A new interface set_client_capabilities (QXLInstance *qin, uint8_t client_present, uint8_t caps[58]); is added to QXLInstance, and spice server is changed to call it whenever a client connects or disconnects. The QXL device in response is expected to update the client capability bits in the ROM of the device and raise the QXL_INTERRUPT_CLIENT interrupt. There is a potential race condition in the case where a client disconnects and a new client with fewer capabilities connects. There may be commands in the ring that the new client can't handle. This case is handled by first changing the capability bits, then processing all commands in the ring, and then start forwarding commands to the new client. As long as the guest obeys the capability bits, the new client will never see anything it doesn't understand.
* client: Advertise A8_SURFACE capabilitySøren Sandmann Pedersen2012-09-061-0/+1
|
* server/red_parse_qxl: fix bitmap_consistent againAlon Levy2012-09-051-2/+2
|
* Implement spice_server_set_exit_on_disconnect to enable an option whereby ↵Jeremy White2012-09-054-3/+22
| | | | the spice server shuts down on client disconnect.
* server/red_parse_qxl: fix wrong bitmap_consistentAlon Levy2012-09-051-5/+26
| | | | | The bit calculation was wrong for all the paletted types by a factor of between 8 and 1 (SPICE_BITMAP_FMT_{1,4,8}BIT_PLT_{LE,BE})
* server/red_parse_qxl: add bitmap consistency checkAlon Levy2012-09-033-16/+34
| | | | | | | | | | | Just checks stride vs width times bpp. This fixes a potential abort on guest generated bad images in glz_encoder. Other files touched to move some consts to red_common, they are static so no problem to be defined in both red_worker.c and red_parse_qxl.c .
* server/tests/test_display_base: fix update_area abortAlon Levy2012-09-031-1/+3
| | | | | Don't do zero area update_areas, server now aborts on those. This tester is not supposed to test those aborts.
* server: replace syntax-check reported tabs with spacesAlon Levy2012-09-032-2/+2
|