From 1ec316e561c4e3e15abd604dd4ee5dd389aa1084 Mon Sep 17 00:00:00 2001 From: Hans de Goede Date: Fri, 1 Apr 2011 14:14:00 +0200 Subject: [PATCH] server: filter all data from client Filter all data from client, even when there is no agent connected to keep filter state correct. --- server/reds.c | 22 +++++++++++----------- 1 file 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();