diff options
author | Hans de Goede <hdegoede@redhat.com> | 2011-04-01 14:14:00 +0200 |
---|---|---|
committer | Hans de Goede <hdegoede@redhat.com> | 2011-04-01 14:14:00 +0200 |
commit | 1ec316e561c4e3e15abd604dd4ee5dd389aa1084 (patch) | |
tree | b43d5e179ffe554f2a3987e5571606260d993732 /server/reds.c | |
parent | add4bedb2fcc2a3f956f2a2a11785fda80902735 (diff) | |
download | spice-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/reds.c')
-rw-r--r-- | server/reds.c | 22 |
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(); |