summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* spice-server.pc.in: move Requires to Requires.privateLiang Guo2011-10-231-1/+1
| | | | | | | | | | When using pkg-config, Requires and Requires.private field list packages required by this package, but packages listed under Requires.private are not taken into account when a flag list is computed for dynamically linked executable. In the situation where each .pc file corresponds to a library, Requires.private shall be used exclusively to specify the dependencies between the libraries.
* server/smartcard: error packet sending. RHBZ 741259Alon Levy2011-09-271-2/+0
| | | | | | fix wrongly applied master patch. With this it is identical to the change in master commit b37182426923124470bf3701f4cff2a6bb345b8d
* Release 0.8.30.8.3Yonit Halperin2011-09-264-2/+14
|
* client: support semi-seamless migration between spice servers with different ↵Yonit Halperin2011-09-264-6/+40
| | | | | | | protocols. It can't actually happen right now, since switch-host migration scheme will take place if the src/target server has protocol 1.
* client: display channel - destroy all surfaces on disconnectYonit Halperin2011-09-262-6/+13
| | | | Fix not destroying surfaces and other data (e.g., streams) upon disconnection.
* client: display channel migrationYonit Halperin2011-09-262-14/+153
|
* client: playback/record channels: implement on_disconnectYonit Halperin2011-09-263-19/+54
|
* client: main channel migration: do partial cleanup when switching hostsYonit Halperin2011-09-262-0/+11
| | | | | | Implement on_disconnect_mig_src and on_connect_mig_target in order to avoid unnecessary cleanups done in on_(disconnet|connect). In addition, do not request guest display settings changes after migration.
* client: handle SPICE_MSG_MAIN_MIGRATE_ENDYonit Halperin2011-09-264-11/+187
| | | | | | | | (1) disconnect all channels from the migration src (2) after all channels are disconnected, clean global resources (3) send SPICE_MSGC_MAIN_MIGRATE_END to migration target (4) wait for SPICE_MSG_MAIN_INIT (4) switch all channels to migration target
* client: handle SpiceMsgMainMigrationBegin for 0.8.2Yonit Halperin2011-09-261-3/+18
| | | | RHBZ 725009, 738270
* client: RedPeer::HostAuthOptions::set_cert_subjectYonit Halperin2011-09-263-51/+59
|
* client: rewrite surfaces cacheYonit Halperin2011-09-2610-263/+101
| | | | | | use std::map instead of a specific template (CHash). There is no need for special template. Moreover, using std::map will allow easy iteration over the surfaces.
* server: fix not calling migrate_connect completion callbackYonit Halperin2011-09-261-10/+8
| | | | | | | | | When the server is a migration target and spice_server_migrate_connect is called before SPICE_MSGC_MIGRATE_END has been received, we start the mig_timer. We handle the migrate_connect only when receiving SPICE_MSGC_MIGRATE_END. If the mig_timer expires before that, we dismiss the request, and should call the migrate_connect completion callback. Since reds->mig_inprogress wasn't set appropriately, it wasn't called.
* server: fall back to switch host scheme in case semi-seamless connection to ↵Yonit Halperin2011-09-261-9/+17
| | | | target fails
* server: turn spice_server_migrate_start into a valid callYonit Halperin2011-09-251-7/+1
| | | | | We will add a qemu call to spice_server_migrate_start when migration starts. For now, it does nothing, but we may need this notification in the future.
* server: call migrate_connect_complete callback when no client is connectedYonit Halperin2011-09-251-29/+43
|
* server: handling semi-seamless migration in the target sideYonit Halperin2011-09-251-20/+116
| | | | | | | | | | (1) not sending anything to the client till we recieve SPICE_MSGC_MIGRATE_END (2) start a new migration (handle client_migrate_info) only after SPICE_MSGC_MIGRATE_END from the previous migration has been received (3) use the correct ticket Note: we assume the same channles are linked before and ater migration. i.e., SPICE_MSGC_MAIN_ATTACH_CHANNELS is not sent from the client.
* server: move the linking of channels to a separate routineYonit Halperin2011-09-251-26/+41
|
* server: move SPICE_MSG_MAIN_INIT sending code to a separate routineYonit Halperin2011-09-251-23/+33
|
* server: send SPICE_MSG_MAIN_MIGRATE_END on spice_server_migrate_endYonit Halperin2011-09-251-18/+67
|
* spice.proto: add SPICE_MSG_MAIN_MIGRATE_END & SPICE_MSGC_MAIN_MIGRATE_ENDYonit Halperin2011-09-251-0/+4
|
* server,proto: tell the client to connect to the migration target before ↵Yonit Halperin2011-09-253-40/+115
| | | | | | | | migraton starts (1) send SPICE_MSG_MAIN_MIGRATE_BEGIN upon spice_server_migrate_connect (2) wait for SPICE_MSGC_MAIN_MIGRATE_(CONNECTED|CONNECT_ERROR), or a timeout, in order to complete client_migrate_info monitor command
* configure: spice-protocol >= 0.8.2 (semi-seamless migration protocol)Yonit Halperin2011-09-251-1/+1
|
* server: handle migration interface additionYonit Halperin2011-09-252-0/+33
|
* server/spice.h: semi-seamless migration interface, RHBZ #738266Yonit Halperin2011-09-253-4/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | semi-seamless migration details: migration source side --------------------- (1) spice_server_migrate_connect (*): tell client to link to the target side - send SPICE_MSG_MAIN_MIGRATE_BEGIN. This should be called upon client_migrate_info cmd. client_migrate_info is asynchronous. (2) Complete spice_server_migrate_connect only when the client has been connected to the target - wait for SPICE_MSGC_MAIN_MIGRATE_(CONNECTED|CONNECT_ERROR) or a timeout. (3) spice_server_migrate_end: tell client migration it can switch to the target - send SPICE_MSG_MAIN_MIGRATE_END. (4) client cleans up all data related to the connection to the source and switches to the target. It sends SPICE_MSGC_MAIN_MIGRATE_END. migration target side --------------------- (1) the server identifies itself as a migraiton target since the client is linked with (connection_id != 0) (2) server doesn't start the channels' logic (channel->link) till it receives SPICE_MSGC_MAIN_MIGRATE_END from the client. * After migration starts, the target qemu is blocked and cannot accept new spice client connections. Thus, we trigger the connection to the target upon client_migrate_info command.
* client: don't crash when booting a Xinerama setupChristophe Fergeau2011-09-201-4/+6
| | | | | | | | | | | | | | | | | | In a Xinerama setup, when X starts up and creates one of the secondary screens, first a non-primary surface is created on the secondary screen, and then the primary surface for this screen is created. This causes a crash when the guest uses Xinerama and the client is attached to the VM before X starts (ie while the guest is booting). This happens because DisplayChannel::create_canvas (which is called when creating a non-primary surface) assumes a screen has already been set for the DisplayChannel while this only happens upon primary surface creation. However, it uses the screen for non important stuff, so we can test if screen() is non NULL before using it. This is what is done in other parts of this file. Fixes rhbz #732423
* fix infinite loop in resolution changeMarc-André Lureau2011-09-201-1/+7
| | | | | | | | | | | | After hours of investigation, I am a bit clueless.. It seems XRR is sending us spurious ScreenChangeNotify in a loop. So we keep calling init_monitors(), which creates new platform_win etc.. Although none of the clients seems to be resetting the screen (checked all XRRSet..). The fact that we create many platform_win looks like a bug to me, and indeed, it seems to help if we reuse the same platform_win over the various init_monitors() calls. Fixes rhbz #692833
* fix 2 X11 related leaksChristophe Fergeau2011-09-202-4/+8
|
* channel: fix EVP_PKEY leakChristophe Fergeau2011-09-201-3/+7
|
* always set VDAgentDisplayConfig::depthChristophe Fergeau2011-09-201-0/+1
| | | | | | Even if VDAgentDisplayConfig::depth will be unused if the VD_AGENT_DISPLAY_CONFIG_FLAG_SET_COLOR_DEPTH isn't set, it's better to initialize it anyway to avoid warnings from valgrind.
* fix integer marshalling helpers on big endianChristophe Fergeau2011-09-201-6/+6
| | | | | | They were trying to convert the destination pointer to an integer before trying to dereference it. The initial conversion was meant to be a cast to a pointer of the right size, not to an integer.
* fix typo in big endian code pathChristophe Fergeau2011-09-201-2/+2
| | | | uint63_t should be uint64_t
* server/smartcard: fix smartcard_channel_send_errorAlon Levy2011-09-201-23/+7
| | | | | | | | It was sending the wrong data, the memory right after the VCSMsgHeader which was actually not where the data was. Fixed by having the header and data (VSCError, 4 bytes of the error code) embedded in the ErrorItem pipe item.
* client: setting monitors resolution before resizing screens, RHBZ #728252Yonit Halperin2011-08-252-12/+34
| | | | fix for "client: fix endless recursion in rearrange_monitors, RHBZ #692976"
* client/red_client: fix broken switch host migration (RHBZ 727969)Alon Levy2011-08-031-0/+1
| | | | | | 3f8d7e59dbd94b1837503f37b5065698df3ffbc7 introduced a regression, after sending one attach_channels message we never send another one. Fix by resetting on disconnect.
* server/red_dispatcher: fix wrong resolution set for tabletAlon Levy2011-07-311-4/+4
| | | | | | | | | | | when changing resolutions due to the new async code paths the surface creation command was kept by reference, and later, when the red_worker signaled completion by calling async_complete the mouse mode was updated using the reference. This caused the wrong values to be read resulting in wrong resolutions set and a non working mouse pointer. Fix this by keeping a copy of the surface creation command instead of a reference. No bz. Found in testing.
* client: fix 30s timeout regressionChristophe Fergeau2011-07-311-2/+7
| | | | | | | | | | | | | | | | | | | | | | | | Changelog from Arnon Gilboa, patch from me: Commit eb6f55409412 caused the following regression: When client runs without the auto-conf or disable-effects options (either from CLI or controller), which is the case when using Spice from Admin Portal, the client will unecessarily wait for 30sec before connecting to a Windows guest with an agent running (this won't happen with linux guests or without an agent running). The mentioned patch assumed that on_agent_reply() of VD_AGENT_DISPLAY_CONFIG will call send_main_attach_channels() and connect. However, when auto-conf or disable-effects are not used, on_agent_reply() will ignore the reply and not call send_main_attach_channels(). Therefore, send_main_attach_channels() will only be called on agent timeout. The solution is to activate agent timer only if auto-conf or disable-effects. Otherwise, simply call send_main_attach_channels(). Fixes rhbz #726441
* Drop unnecessary X11 and alsa requires from spice-server.pcHans de Goede2011-07-271-3/+0
|
* server: not reading command rings before RED_WORKER_MESSAGE_START, RHBZ #718713Yonit Halperin2011-07-241-1/+11
| | | | | | | On migration, destroy_surfaces is called from qxl (qxl_hard_reset), before the device was loaded (on destination). handle_dev_destroy_surfaces led to red_process_commands, which read the qxl command ring (which appeared to be not empty), and then when processing the command it accessed unmapped memory.
* Release 0.8.20.8.2Alon Levy2011-07-223-2/+13
|
* distcheck: add --enable-smartcard --with-saslAlon Levy2011-07-221-1/+1
|
* fix make distcheckChristophe Fergeau2011-07-228-12/+13
|
* client: don't die if initial agent timeout triggersChristophe Fergeau2011-07-222-2/+10
| | | | | | | | | | When the client connects to a spice VM, if an agent is detected, there will be a few messages exchanged to exchange capabilities, display resolutions, ... This exchange has a timeout in case something goes wrong. However, when it fires, the client dies. This commit changes this and lets the client connects to the guest when the timeout happens. rhbz #673973
* client: only send one SPICE_MSGC_MAIN_ATTACH_CHANNELS messagesChristophe Fergeau2011-07-212-8/+16
| | | | | | | | | | | | | | 492f7a9b fixed unwanted timeouts during initial client startup, but it also caused a bad regression when connecting to RHEL6+agent guests: the SPICE_MSGS_MAIN_ATTACH_CHANNELS message was sent multiple times, once in RedClient::handle_init, then once again in RedClient::on_agent_announce_capabilities (which can even be triggered multiple times). Sending this message multiple times is a big NO and causes the server to close the client connection, and the client to die. Add a _msg_attach_message_sent boolean to make sure we only send this message once. rhbz #712938
* client: fix endless recursion in rearrange_monitors, RHBZ #692976Yonit Halperin2011-07-214-50/+54
| | | | | | | I changed RedScreen::resize not to call rearrange_monitors. Instead, the monitor should be configured correctly from Application, before calling resize. In addition, I made some cleanups to allow reusing rearrange_monitors code.
* server/red_worker: send surface images to client on-demand after S3/4 wakeupYonit Halperin2011-07-211-9/+22
| | | | | | When surfaces are being reloaded to the worker, we will send them to the client only if and when it needs them. (cherry picked from commit 51628f512456cd26c8c6b417be6b34f3889b33d2)
* server/spice.h: bump QXL_MINOR because of QXLWorker and QXLInterface changesAlon Levy2011-07-211-1/+1
| | | | (cherry picked from commit 3be08d68c01618c81e0dff6caab125a53b4c047e)
* server: add QXLWorker.flush_surfaces_async for S3/S4 supportAlon Levy2011-07-215-4/+46
| | | | | | | | | | | | This does the following, all to remove any referenced memory on the pci bars: flush_all_qxl_commands(worker); flush_all_surfaces(worker); red_wait_outgoing_item((RedChannel *)worker->display_channel); red_wait_outgoing_item((RedChannel *)worker->cursor_channel); The added api is specifically async, i.e. it calls async_complete when done. (cherry picked from commit 2a4d97fb780cf3ce2d9060751d0bec2fdc9800a9)
* server: add QXLInterface::update_area_complete callbackAlon Levy2011-07-212-16/+47
| | | | | | when update_area_async is called update_area_complete will be called with the surfaces dirty rectangle list. (cherry picked from commit b26f0532c170068e91e4946592eab2fd9d6cbae5)
* server/red_worker: handle_dev_input: reuse write_ready introduced for asyncAlon Levy2011-07-211-8/+4
| | | | (cherry picked from commit f300de20d9fd7731881ab99c87226fa44a80695b)