[Spice-devel] [PATCH 2/2] client: don't die if initial agent timeout triggers
Alon Levy
alevy at redhat.com
Thu Jul 21 14:11:31 PDT 2011
On Thu, Jul 21, 2011 at 05:43:17PM +0200, Christophe Fergeau wrote:
> 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
ACK.
> ---
> client/red_client.cpp | 6 ++++--
> client/red_client.h | 6 ++++++
> 2 files changed, 10 insertions(+), 2 deletions(-)
>
> diff --git a/client/red_client.cpp b/client/red_client.cpp
> index 4a6d3fd..a74fd10 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)
> diff --git a/client/red_client.h b/client/red_client.h
> index 7f5b589..17391e4 100644
> --- a/client/red_client.h
> +++ b/client/red_client.h
> @@ -114,8 +114,14 @@ public:
> }
> };
>
> +class RedClient;
> +
> class AgentTimer: public Timer {
> +public:
> virtual void response(AbstractProcessLoop& events_loop);
> + AgentTimer(RedClient *client) : _client(client) {};
> +private:
> + RedClient *_client;
> };
>
> typedef std::map< int, RedPeer::ConnectionOptions::Type> PeerConnectionOptMap;
> --
> 1.7.6
>
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/spice-devel
More information about the Spice-devel
mailing list