summaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorHans de Goede <hdegoede@redhat.com>2011-04-01 14:14:00 +0200
committerHans de Goede <hdegoede@redhat.com>2011-04-01 14:14:00 +0200
commit1ec316e561c4e3e15abd604dd4ee5dd389aa1084 (patch)
treeb43d5e179ffe554f2a3987e5571606260d993732 /server
parentadd4bedb2fcc2a3f956f2a2a11785fda80902735 (diff)
downloadspice-1ec316e561c4e3e15abd604dd4ee5dd389aa1084.tar.gz
spice-1ec316e561c4e3e15abd604dd4ee5dd389aa1084.tar.xz
spice-1ec316e561c4e3e15abd604dd4ee5dd389aa1084.zip
server: filter all data from client
Filter all data from client, even when there is no agent connected to keep filter state correct.
Diffstat (limited to 'server')
-rw-r--r--server/reds.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/server/reds.c b/server/reds.c
index 3c7077aa..7a3399e2 100644
--- a/server/reds.c
+++ b/server/reds.c
@@ -1710,17 +1710,6 @@ static void reds_main_handle_message(void *opaque, size_t size, uint32_t type, v
}
--reds->agent_state.num_client_tokens;
- if (!vdagent) {
- add_token();
- break;
- }
-
- if (!reds->agent_state.client_agent_started) {
- red_printf("SPICE_MSGC_MAIN_AGENT_DATA race");
- add_token();
- break;
- }
-
res = agent_msg_filter_process_data(&reds->agent_state.write_filter,
message, size);
switch (res) {
@@ -1734,6 +1723,17 @@ static void reds_main_handle_message(void *opaque, size_t size, uint32_t type, v
return;
}
+ if (!vdagent) {
+ add_token();
+ break;
+ }
+
+ if (!reds->agent_state.client_agent_started) {
+ red_printf("SPICE_MSGC_MAIN_AGENT_DATA race");
+ add_token();
+ break;
+ }
+
if (!(ring_item = ring_get_head(&reds->agent_state.external_bufs))) {
red_printf("no agent free bufs");
reds_disconnect();