diff options
author | Christophe Fergeau <cfergeau@redhat.com> | 2011-07-21 12:11:36 +0200 |
---|---|---|
committer | Christophe Fergeau <cfergeau@redhat.com> | 2011-07-22 10:24:30 +0200 |
commit | eb6f554094129b6a198607b2e65dfefa0c26c05b (patch) | |
tree | 805918437f4388d32c9b1cd4d1c735de6e064a0d /client/red_client.cpp | |
parent | fc2f7d14a27bf44866c6244c8c512fbfddbea677 (diff) | |
download | spice-eb6f554094129b6a198607b2e65dfefa0c26c05b.tar.gz spice-eb6f554094129b6a198607b2e65dfefa0c26c05b.tar.xz spice-eb6f554094129b6a198607b2e65dfefa0c26c05b.zip |
client: don't die if initial agent timeout triggers
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
Diffstat (limited to 'client/red_client.cpp')
-rw-r--r-- | client/red_client.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/client/red_client.cpp b/client/red_client.cpp index 4a6d3fda..a74fd107 100644 --- a/client/red_client.cpp +++ b/client/red_client.cpp @@ -340,7 +340,9 @@ void AgentTimer::response(AbstractProcessLoop& events_loop) { Application* app = static_cast<Application*>(events_loop.get_owner()); app->deactivate_interval_timer(this); - THROW_ERR(SPICEC_ERROR_CODE_AGENT_TIMEOUT, "vdagent timeout"); + + LOG_WARN("timeout while waiting for agent response"); + _client->send_main_attach_channels(); } class MainChannelLoop: public MessageHandlerImp<RedClient, SPICE_CHANNEL_MAIN> { @@ -371,7 +373,7 @@ RedClient::RedClient(Application& application) , _agent_out_msg_size (0) , _agent_out_msg_pos (0) , _agent_tokens (0) - , _agent_timer (new AgentTimer()) + , _agent_timer (new AgentTimer(this)) , _agent_caps_size(0) , _agent_caps(NULL) , _migrate (*this) |