summaryrefslogtreecommitdiffstats
path: root/server
Commit message (Collapse)AuthorAgeFilesLines
...
* smartcard: send MSG_MIGRATE upon vm migration completionYonit Halperin2012-08-271-5/+0
| | | | | The above is the default behaviour for red_channel_client, if client_cbs.migrate is not registered as part of red_channel_register_client_cbs
* smartcard: fix PIPE_ITEMs enum indexingYonit Halperin2012-08-271-1/+1
| | | | | The enum should start from PIPE_ITEM_TYPE_CHANNEL_BASE, otherwise, PIPE_ITEM_TYPE_ERROR is handled like PIPE_ITEM_TYPE_SET_ACK.
* smartcard: change the timing of attaching a client to SpiceCharDeviceStateYonit Halperin2012-08-271-45/+75
| | | | | | | | | Attach/detach a client to a SpiceCharDeviceState upon its connection/disconnection, instead of upon reader_add/remove messages. When the client is removed from a SpiceCharDeviceState, all the messages from this client are removed from the device write queue. This shouldn't happen when we only receive reader_remove and the client is still connected.
* spicevmc migration: restore migration dest state from migration dataYonit Halperin2012-08-271-2/+29
|
* spicevmc migration: send migration dataYonit Halperin2012-08-271-5/+55
|
* spicevmc: send MSG_MIGRATE upon vm migration completionYonit Halperin2012-08-271-6/+0
| | | | | The above is the default behaviour for red_channel_client, if client_cbs.migrate is not registered as part of red_channel_register_client_cbs
* migration_protocol: add migration data for spicevmcYonit Halperin2012-08-271-0/+11
|
* char device migration: restore state at destination from migration dataYonit Halperin2012-08-272-0/+52
|
* char device migration: don't read or write from/to the device while waiting ↵Yonit Halperin2012-08-275-14/+32
| | | | for migraion data
* char device migration: marshall migration dataYonit Halperin2012-08-272-0/+74
|
* char_device: variable token price for write buffersYonit Halperin2012-08-272-12/+29
| | | | | | | When restoring migration data, we also restore data that is addressed to the device, and that might have been originated from more than 1 message. When the write buffer that is assoicated with this data is released, we need to free all the relevant tokens.
* migration_protocol: add migration data for char devicesYonit Halperin2012-08-271-0/+20
|
* replace some migration related spice_error calls with info/warningYonit Halperin2012-08-271-2/+2
|
* seamless migration: migration completion on the destination sideYonit Halperin2012-08-278-25/+202
| | | | | | Tracking the channels that wait for migration data. If there is a new migration process pending, when all the channels have restored their state, we begin the new migration.
* red_channel: handle sending SPICE_MSG_MIGRATEYonit Halperin2012-08-277-21/+69
| | | | | | | The relevant code is common to all channels. The patch also contains a fix to the return value for handle_migrate_data callback: s/uint64_t/int
* red_channel: fix pipe item leakYonit Halperin2012-08-271-0/+1
|
* seamleass migration: manage post migration phase in the src sideYonit Halperin2012-08-271-13/+108
| | | | | | | | | | | In semi-seamless, SPICE_MSG_MAIN_MIGRATE_END is sent. In seamless, each channel migrates separately. The src waits till all the clients are disconnected (or a timeout), and then it notifies qemu that spice migration has completed. The patch doesn't include the per-channel logic for seamless migration (sending MSG_MIGRATE, MIGRATE_DATA, etc.).
* seamless migration: pre migration phase on the destination sideYonit Halperin2012-08-273-16/+85
| | | | | | | | | | - handle SPICE_MSGC_MAIN_MIGRATE_DST_DO_SEAMLESS - reply with SPICE_MSG_MAIN_MIGRATE_DST_SEAMLESS_ACK/NACK - prepare the channels for migration according to the migration type (semi/seamless) see spice-protocol for more details: commit 3838ad140a046c4ddf42fef58c9727ecfdc09f9f
* seamless migration: pre migration phase on the src sideYonit Halperin2012-08-274-27/+124
| | | | | | | | | | | | | | sending SPICE_MSG_MAIN_MIGRATE_BEGIN_SEAMLESS and handling SPICE_MSGC_MAIN_MIGRATE_CONNECTED_SEAMLESS The src side signals the client to establish a connection to the destination. In seamless migration, the client is also used to perform a sort of handshake with the destination, for verifying if seamless migration can be supported. see spice-protocol for more details: commit 3838ad140a046c4ddf42fef58c9727ecfdc09f9f
* seamless-migration: update spice-common submoduleYonit Halperin2012-08-271-8/+8
| | | | | | Also Update server and client according to the change of SpiceMsgMainMigrationBegin: it now holds all the fields inside SpiceMigrationDstInfo.
* seamless-migration: add migration_protocol.hYonit Halperin2012-08-272-0/+50
| | | | | | | The file will hold the declarations of the different migration data messages (depending on the channel), that will be passed from the src server to the dst server, via the client, using SPICE_MSG_MIGRATE_DATA.
* bump version to 0.11.2Yonit Halperin2012-08-272-1/+8
| | | | | | | New api entries: spice_server_vm_start spice_server_vm_stop spice_server_set_seamless_migration
* spice.h: add spice_server_set_seamless_migrationYonit Halperin2012-08-272-0/+11
| | | | | | | | | | This new call is used in order to identify whether qemu, or the management (e.g. libvirt), support seamless migration. If it is supported, qemu spice cmd-line configuration should have seamless-migration=on. In addition, we disable seamless migration support if multiple clients are allowed. Currently, only one client is supported.
* spice_server_vm_start/stop: notify red_dispatcher on vm start/stopYonit Halperin2012-08-274-2/+30
| | | | | | | Till now, red_worker was notfied about vm status changes via QXLWorker->start/stop (or spice_qxl_start/stop). Newer qemu, that supports calling spice_server_vm_start/stop, will call only these routines, and won't call QXLWorker->start/stop.
* spice.h: add entries for tracking vm stateYonit Halperin2012-08-272-1/+36
| | | | | | | | | When vm state changes (started/stopped), we notify all the attached SpiceCharDeviceStates about the change. This is mainly required for avoiding writing/reading to/from the device during the non-live stage of migration. spice version will be bumped in one of the following patches.
* reds: add tracking for char devicesYonit Halperin2012-08-273-0/+46
| | | | | | The list of attached char_devices will be used in the next patch for notifying each instance of SpiceCharDeviceState when the vm is started or stopped.
* agent: don't attempt to read from the device if it was releasedYonit Halperin2012-08-271-1/+3
| | | | | if vdi_port_read_buf_process failes, we detach the agent and also release the read buffer. We shouldn't try reading from the device afterwards.
* agent: reset client tokens when notifying on agent connectionYonit Halperin2012-08-272-7/+26
| | | | send SPICE_MSG_MAIN_AGENT_CONNECTED_TOKENS
* red_channel: add red_channel_test_remote_capYonit Halperin2012-08-272-0/+32
| | | | for checking if all the channel clients connected support the cap
* Add support for QXLComposite to spice serverSøren Sandmann Pedersen2012-08-244-2/+164
| | | | | | In red-parse-qxl.c add support for parsing QXLComposite into SpiceComposite. In red-worker.c add support for marshalling SpiceComposite onto the wire.
* Add support for LZ compression of A8 imagesSøren Sandmann Pedersen2012-08-243-10/+17
| | | | | | Graduality is irrelevant for A8 images, so instead of using RGB-ness as a short-cut, add a new macro BITMAP_FMT_HAS_GRADUALITY() that returns true for the existing RGB images, but false for A8.
* red_worker: Fix reference counting for the current frame (drawable) of a streamYonit Halperin2012-07-251-15/+1
| | | | | | | | | | | | | | | | | After marshalling MSG_STREAM_CREATE, there is no need to ref and unref stream->current before and after completing the sending of the message (correspondingly). The referencing is unnecessary because all the data that is required from the drawable (the clipping), is copied during marshalling, and no field in the drawable is referenced (see spice_marshall_msg_display_stream_create). Moreover, the referencing was bugous: While display_channel_hold_pipe_item and display_channel_client_release_item_after_push referenced and dereferenced, correspondingly, stream->current, stream->current might have changed in between these calls, and then we ended up with one drawable leaking, and one drawable released before its time has come (which of course led to critical errors).
* bump version to 0.11.1 for new spice_qxl_monitors_config_asyncAlon Levy2012-07-231-1/+1
| | | | | bump current and age since only additions where done. new server library is libspice-server.so.1.2.0 .
* server: add monitors_config supportAlon Levy2012-07-226-1/+285
| | | | | | | | | | | | | | | | a SpiceMsgDisplayMonitorsConfig is sent on two occasions: * as a result of a spice_qxl_monitors_config_async * whenever a client connects and there is a previously set monitors config Sending the new message is protected by a new cap, SPICE_DISPLAY_CAP_MONITORS_CONFIG More elaborately: spice_qxl_monitors_config_async receives a QXLPHYSICAL address of a QXLMonitorsConfig struct and reads it, caching it in the RedWorker, and sending it to all clients. Whenever a new client connects it receives a SpiceMsgDisplayMonitorsConfig message as well.
* server/red_parse_qxl: red_get_image: fix leaks on bad imageAlon Levy2012-07-221-8/+16
|
* server/red_worker: release bad drawablesAlon Levy2012-07-221-3/+2
|
* server/red_parse_qxl: disallow zero area bitmapsAlon Levy2012-07-221-0/+4
| | | | | | prevents division by zero later (SIGFPE, Arithmetic exception) in spice-common code, at spice-common/common/canvas_base.c:646 for both client and server (server only upon rendering).
* server/red_parse_qxl: get_path: remove return NULLAlon Levy2012-07-221-1/+0
| | | | introduced by 2ec2dbc78a660ee4e3315f50c881d9e31a8e4fe2
* server/reds: more fixes for wrong spice_error in d2c99b59Alon Levy2012-07-221-68/+68
|
* server: don't abort on guest images with missing palettesAlon Levy2012-07-222-0/+13
|
* server: factor out bitmap_fmt_is_rgbAlon Levy2012-07-222-8/+19
|
* tests: add missing file to .gitignoreMarc-André Lureau2012-07-161-0/+1
| | | | TODO: some day, switch to git.mk
* server/reds: fix wrong spice_error in d2c99b59Alon Levy2012-07-111-26/+26
|
* server/red_worker: fix wrong spice_error in commit 706232a8Alon Levy2012-07-111-16/+16
|
* server/reds.c: spice_printerr cleanupAlon Levy2012-07-051-148/+146
| | | | | | | | | | | | | | | | | | Rules for replacing spice_printerr: * if it's a client drop / agent drop, spice_error * if it's important, spice_warning * else, spice_info. The fourth rule is spice_debug if it's going to fill up the log, but nothing of the sort here. Other things this patch does: * changed reds_show_new_channel to reds_info_new_channel in an attempt to advertise it doesn't always show anything, unless SPICE_DEBUG_LOG_LEVEL >= SPICE_DEVUG_LOG_INFO (==3) * removes two lines of whitespace. * added "crashy" to multiple client warning (only warning introduced, the rest are errors).
* server/red_worker: elevate some spice_debugs to spice_infoAlon Levy2012-07-051-52/+52
| | | | | | Specifically all those that the previous patch converted to spice_debug. spice_debug contains very verbose stuff like update_area that drowns out those relatively rare (client connect / disconnect generated) messages.
* server/red_worker: cleanup lines starting with 5 spacesAlon Levy2012-07-051-13/+13
|
* server/red_worker: death to spice_printerr, too verbose by farAlon Levy2012-07-051-91/+91
| | | | | Replaced mostly with spice_debug, but spice_warning & spice_error as well where appropriate.
* smartcard: Remove redefinition of typedef 'SmartCardDeviceState'Yonit Halperin2012-07-041-2/+2
|
* char_device.h: Remove redefinition of typedef 'SpiceCharDeviceState'Yonit Halperin2012-07-031-2/+0
| | | | The original definition is in spice.h