diff options
Diffstat (limited to 'client')
-rw-r--r-- | client/red_client.cpp | 6 | ||||
-rw-r--r-- | 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 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) diff --git a/client/red_client.h b/client/red_client.h index 7f5b5896..17391e49 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; |