spice/client
Christophe Fergeau c44878ff8d client: don't crash when agent is missing WAN support
If you try to connect to a linux guest with WAN options, SPICE window opens up
and is blank - it then fails with vdagent timeout message.  It should give a
warning that this is only applicable for windows guest and still connect to
guest.

It all starts in RedClient::handle_init
This function checks whether we have an agent or not, because if we have an
agent, there will be some kind of handshake to check both sides capabilities
before all the spice channels are created.

When there is no agent running, the startup process goes on with
SPICE_MSGC_MAIN_ATTACH_CHANNELS

When there is a windows agent running, VD_AGENT_ANNOUNCE_CAPABILITIES and
VD_AGENT_DISPLAY_CONFIG messages are sent to the agent, and when processing the
agent answer to the VD_AGENT_DISPLAY_CONFIG message,
SPICE_MSGC_MAIN_ATTACH_CHANNELS will be sent and the startup process will go
on.

However, when there is no agent running but --color-depth was used, handle_init
won't send the SPICE_MSGC_MAIN_ATTACH_CHANNELS message but will wait for the
agent handshake to proceed to its end, which won't happen, so it will timeout
waiting for agent answers.

Similarly, the linux agent handles VD_AGENT_ANNOUNCE_CAPABILITIES messages, but
it doesn't handle VD_AGENT_DISPLAY_CONFIG messages, so we'll never reach the
point where a SPICE_MSGC_MAIN_ATTACH_CHANNELS will be sent.

This commit fixes this in 2 places:
- unconditionnally send SPICE_MSGC_ATTACH_CHANNELS when no agent is running in
handle_init
- send SPICE_MSGC_MAIN_ATTACH_CHANNELS in
RedClient::on_agent_announce_capabilities if the agent doesn't have the
VD_AGENT_CAP_DISPLAY_CONFIG capability

This fixes RH bug #712938
2011-07-21 15:09:29 +03:00
..
gui add missing "LGPLv2.1 or later" header to source files 2011-07-21 15:09:28 +03:00
tests add .gitignore for tests 2010-11-30 20:54:49 +02:00
windows client/windows: enable image randomization (ASLR) rhbz#701111 2011-07-21 15:09:28 +03:00
x11 x11: don't return freed memory from get_clipboard 2011-07-21 15:09:28 +03:00
.gitignore gitignore: add generated_*, vim temps, pyc 2010-11-08 16:06:55 +02:00
application.cpp client: improve WAN option description 2011-07-21 15:09:28 +03:00
application.h client: --help should not need platform initialization 2011-01-27 17:23:51 +02:00
audio_channels.h Relicense everything from GPL to LGPL 2.1+ 2010-04-13 22:22:15 +02:00
audio_devices.h Relicense everything from GPL to LGPL 2.1+ 2010-04-13 22:22:15 +02:00
cache.hpp Relicense everything from GPL to LGPL 2.1+ 2010-04-13 22:22:15 +02:00
canvas_utils.cpp Relicense everything from GPL to LGPL 2.1+ 2010-04-13 22:22:15 +02:00
canvas.cpp Client: Use the autogenerated demarshallers 2010-06-18 16:32:11 +02:00
canvas.h Remove unused method declarations 2010-07-08 14:19:45 +02:00
client_net_socket.cpp Relicense everything from GPL to LGPL 2.1+ 2010-04-13 22:22:15 +02:00
client_net_socket.h Fix spelling errors in comments and strings 2010-05-21 10:51:28 +02:00
cmd_line_parser.cpp client: s/reqired/required in CmdLineParser 2011-07-21 15:09:27 +03:00
cmd_line_parser.h client: s/reqired/required in CmdLineParser 2011-07-21 15:09:27 +03:00
common.h client/windows: init PACKAGE_VERSION 2011-05-24 12:29:13 +03:00
controller.cpp client: s/AVAILIBLE/AVAILABLE in CmdLineParser 2011-04-20 10:45:10 +02:00
controller.h controller: Make menu text utf-8 2010-10-25 11:36:35 +02:00
cursor_channel.cpp Make cursor data @as_ptr to avoid copying data 2010-06-18 20:27:32 +02:00
cursor_channel.h Make cursor data @as_ptr to avoid copying data 2010-06-18 20:27:32 +02:00
cursor.cpp Relicense everything from GPL to LGPL 2.1+ 2010-04-13 22:22:15 +02:00
cursor.h Make all message structs internal to spice 2010-06-18 20:27:32 +02:00
debug.h Replace log4cpp with custom log function 2010-06-28 21:54:53 +02:00
demarshallers.h Generate marshaller/demarshallers for old protocol 2010-06-22 17:34:39 +02:00
display_channel.cpp opengl: fix compilation 2011-07-21 15:09:27 +03:00
display_channel.h detaching the screen when the primary surface is destoryed and closing the window if the primary surface is not recreated (the monitor has been detached). 2010-06-29 13:59:46 +02:00
event_sources.h Relicense everything from GPL to LGPL 2.1+ 2010-04-13 22:22:15 +02:00
foreign_menu.cpp spicec: add foreign menu 2010-10-18 10:03:46 +02:00
foreign_menu.h spicec: add foreign menu 2010-10-18 10:03:46 +02:00
gdi_canvas.cpp Relicense everything from GPL to LGPL 2.1+ 2010-04-13 22:22:15 +02:00
gl_canvas.cpp Relicense everything from GPL to LGPL 2.1+ 2010-04-13 22:22:15 +02:00
glc.cpp Relicense everything from GPL to LGPL 2.1+ 2010-04-13 22:22:15 +02:00
glz_decode_tmpl.c Fix spelling errors in comments and strings 2010-05-21 10:51:28 +02:00
glz_decoded_image.h Fix spelling errors in comments and strings 2010-05-21 10:51:28 +02:00
glz_decoder_config.h Relicense everything from GPL to LGPL 2.1+ 2010-04-13 22:22:15 +02:00
glz_decoder_window.cpp spicec: Do not try to do accounting of pci memory 2010-10-09 22:27:53 +02:00
glz_decoder_window.h spicec: Do not try to do accounting of pci memory 2010-10-09 22:27:53 +02:00
glz_decoder.cpp client/glz_decoder.cpp: gcc 4.6.0 unused fixes 2011-01-27 12:48:44 +02:00
glz_decoder.h Move in spice/draw.h from spice-protocol to common/ 2010-07-08 13:56:01 +02:00
hot_keys.cpp client: gcc 4.6.0: two more unused variable fixes 2011-01-27 12:48:53 +02:00
hot_keys.h Relicense everything from GPL to LGPL 2.1+ 2010-04-13 22:22:15 +02:00
icon.h Relicense everything from GPL to LGPL 2.1+ 2010-04-13 22:22:15 +02:00
inputs_channel.cpp Fix keyb modifiers not syncing from client to client os (rhbz#679467) 2011-03-01 19:40:36 +02:00
inputs_channel.h client inputs: stop blinking keyboard when out of focus 2011-01-17 20:29:33 +02:00
inputs_handler.h Relicense everything from GPL to LGPL 2.1+ 2010-04-13 22:22:15 +02:00
jpeg_decoder.cpp JPEG support: introducing jpeg encoding for spice bitmaps 2010-06-09 11:40:25 +02:00
jpeg_decoder.h add eol after #ifdef in jpeg_encoder.h for n900 scratchbox compiler 2010-07-29 11:10:41 +03:00
lines.cpp Relicense everything from GPL to LGPL 2.1+ 2010-04-13 22:22:15 +02:00
lz.cpp Relicense everything from GPL to LGPL 2.1+ 2010-04-13 22:22:15 +02:00
Makefile.am client: use silent generation rules in Makefile.am 2011-07-21 15:09:27 +03:00
marshaller.cpp Generate and link marshallers into client 2010-06-18 20:27:32 +02:00
marshallers.h Fix build error due to member "SpiceMsgEmpty" same name as type 2010-06-28 12:45:07 +02:00
mem.cpp Relicense everything from GPL to LGPL 2.1+ 2010-04-13 22:22:15 +02:00
menu.cpp spicec: add menu id & find_sub() 2010-10-17 11:44:13 +02:00
menu.h spicec: add menu id & find_sub() 2010-10-17 11:44:13 +02:00
mjpeg_decoder.cpp client: Include config.h from common.h 2010-09-29 13:26:21 +02:00
mjpeg_decoder.h Swap red and blue when decoding 0.4 mjpeg streams 2010-07-20 11:45:37 +02:00
monitor.cpp Relicense everything from GPL to LGPL 2.1+ 2010-04-13 22:22:15 +02:00
monitor.h Fix inclusion of common files, no need for common/ part 2010-07-08 15:44:15 +02:00
pixels_source.h Fix inclusion of common files, no need for common/ part 2010-07-08 15:44:15 +02:00
pixman_utils.cpp Relicense everything from GPL to LGPL 2.1+ 2010-04-13 22:22:15 +02:00
platform.h spicec: Move setting of clipboard_owner to guest to platform code 2010-10-06 19:17:08 +02:00
playback_channel.cpp Make sound data @as_ptr to avoid copying data 2010-06-18 20:27:32 +02:00
process_loop.cpp spicec: add ProcessLoop::on_start_running() 2010-10-17 11:45:50 +02:00
process_loop.h spicec: add ProcessLoop::on_start_running() 2010-10-17 11:45:50 +02:00
quic.cpp Relicense everything from GPL to LGPL 2.1+ 2010-04-13 22:22:15 +02:00
read_write_mutex.h Relicense everything from GPL to LGPL 2.1+ 2010-04-13 22:22:15 +02:00
record_channel.cpp Convert client to use indirect calls for message marshalling 2010-06-22 10:54:59 +02:00
red_channel.cpp spicec: do not call connect_secure when connect_unsecure fails due to protocol version mismatch (v2) 2010-12-07 14:34:22 +02:00
red_channel.h Fix various misspellings 2010-07-08 18:26:37 +02:00
red_client.cpp client: don't crash when agent is missing WAN support 2011-07-21 15:09:29 +03:00
red_client.h spicec: name host param 2010-10-17 11:46:37 +02:00
red_drawable.h Add helper to compare RedDrawable::Formats for copy compabible 2010-04-23 16:36:35 +02:00
red_gdi_canvas.cpp applying zlib compression over glz on WAN connection 2010-06-21 15:05:37 +02:00
red_gdi_canvas.h Make client canvas and pixmaps handle more formats and simplify 2010-04-23 16:36:35 +02:00
red_gl_canvas.cpp applying zlib compression over glz on WAN connection 2010-06-21 15:05:37 +02:00
red_gl_canvas.h Remove all mentions of "cairo" from the code 2010-05-03 12:38:02 +02:00
red_key.h Relicense everything from GPL to LGPL 2.1+ 2010-04-13 22:22:15 +02:00
red_peer.cpp client: log subject-host mismatch, and raise ssl warnings to errors 2011-01-17 20:29:33 +02:00
red_peer.h Fix various misspellings 2010-07-08 18:26:37 +02:00
red_pixmap_gdi.h Remove all mentions of "cairo" from the code 2010-05-03 12:38:02 +02:00
red_pixmap_gl.h Make client canvas and pixmaps handle more formats and simplify 2010-04-23 16:36:35 +02:00
red_pixmap_sw.h Remove all mentions of "cairo" from the code 2010-05-03 12:38:02 +02:00
red_pixmap.h Add RedDrawable::Format get_format() 2010-04-23 16:36:35 +02:00
red_sw_canvas.cpp applying zlib compression over glz on WAN connection 2010-06-21 15:05:37 +02:00
red_sw_canvas.h Remove all mentions of "cairo" from the code 2010-05-03 12:38:02 +02:00
red_types.h Relicense everything from GPL to LGPL 2.1+ 2010-04-13 22:22:15 +02:00
red_window.h client: Interpret the title control message as utf8 instead of unicode16 2010-10-21 13:19:51 +02:00
region.cpp Relicense everything from GPL to LGPL 2.1+ 2010-04-13 22:22:15 +02:00
rop3.cpp Relicense everything from GPL to LGPL 2.1+ 2010-04-13 22:22:15 +02:00
screen_layer.cpp Relicense everything from GPL to LGPL 2.1+ 2010-04-13 22:22:15 +02:00
screen_layer.h Relicense everything from GPL to LGPL 2.1+ 2010-04-13 22:22:15 +02:00
screen.cpp client: fix for redundant shift+f11 RHBZ #674532 2011-06-14 10:08:32 +03:00
screen.h spicec: Don't show a white screen if guest resolution does not fit fullscreen 2010-11-25 11:23:02 +01:00
shared_cache.hpp support for lossy images in the pixmap cache and fill bits 2010-06-09 11:41:01 +02:00
smartcard_channel.cpp add missing "LGPLv2.1 or later" header to source files 2011-07-21 15:09:28 +03:00
smartcard_channel.h add missing "LGPLv2.1 or later" header to source files 2011-07-21 15:09:28 +03:00
sw_canvas.cpp Remove all mentions of "cairo" from the code 2010-05-03 12:38:02 +02:00
threads.cpp client: Fall back to gettimeofday if clock_gettime not found 2010-09-29 13:35:18 +02:00
threads.h Relicense everything from GPL to LGPL 2.1+ 2010-04-13 22:22:15 +02:00
tunnel_channel.cpp codegen: Various cleanups 2010-07-19 16:28:22 +02:00
tunnel_channel.h Relicense everything from GPL to LGPL 2.1+ 2010-04-13 22:22:15 +02:00
utils.cpp Remove no longer used wstring_printf functions 2010-10-21 13:22:01 +02:00
utils.h Remove no longer used wstring_printf functions 2010-10-21 13:22:01 +02:00
zlib_decoder.cpp add missing "LGPLv2.1 or later" header to source files 2011-07-21 15:09:28 +03:00
zlib_decoder.h applying zlib compression over glz on WAN connection 2010-06-21 15:05:37 +02:00