diff options
author | Christophe Fergeau <cfergeau@redhat.com> | 2011-07-29 17:31:01 +0200 |
---|---|---|
committer | Arnon Gilboa <agilboa@redhat.com> | 2011-07-31 13:32:28 +0300 |
commit | 759fe8e27027dd8d8882eca60c9ba50b7afb0ba9 (patch) | |
tree | 5e8fa969f066689da4f03707375386143b9276f6 /client | |
parent | 8b4ff62ddbef215859161d042012d705e64ea1bb (diff) | |
download | spice-759fe8e27027dd8d8882eca60c9ba50b7afb0ba9.tar.gz spice-759fe8e27027dd8d8882eca60c9ba50b7afb0ba9.tar.xz spice-759fe8e27027dd8d8882eca60c9ba50b7afb0ba9.zip |
client: fix 30s timeout regression
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
Diffstat (limited to 'client')
-rw-r--r-- | client/red_client.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/client/red_client.cpp b/client/red_client.cpp index a74fd107..d0e7a3fb 100644 --- a/client/red_client.cpp +++ b/client/red_client.cpp @@ -971,9 +971,14 @@ void RedClient::handle_init(RedPeer::InMessage* message) post_message(msg); send_agent_announce_capabilities(true); if (_auto_display_res) { - send_agent_monitors_config(); + send_agent_monitors_config(); + } + + if (_auto_display_res || !_display_setting.is_empty()) { + _application.activate_interval_timer(*_agent_timer, AGENT_TIMEOUT); + } else { + send_main_attach_channels(); } - _application.activate_interval_timer(*_agent_timer, AGENT_TIMEOUT); } else { if (_auto_display_res || !_display_setting.is_empty()) { LOG_WARN("no agent running, display options have been ignored"); |