diff options
author | Hans de Goede <hdegoede@redhat.com> | 2011-04-01 14:19:25 +0200 |
---|---|---|
committer | Hans de Goede <hdegoede@redhat.com> | 2011-04-04 11:30:30 +0200 |
commit | 3accb60240dbfd9a2a7627aef879f403cd517612 (patch) | |
tree | 0b4189bfe5e0b6a19128243310526b7c1e6b43a2 /server/agent-msg-filter.c | |
parent | 66cf0e28b3e7bcc5db3d1faf1de0437a6d2878d1 (diff) | |
download | spice-3accb60240dbfd9a2a7627aef879f403cd517612.tar.gz spice-3accb60240dbfd9a2a7627aef879f403cd517612.tar.xz spice-3accb60240dbfd9a2a7627aef879f403cd517612.zip |
server: add discard all option to agent message filter
Diffstat (limited to 'server/agent-msg-filter.c')
-rw-r--r-- | server/agent-msg-filter.c | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/server/agent-msg-filter.c b/server/agent-msg-filter.c index 3867d11e..cd1f78c3 100644 --- a/server/agent-msg-filter.c +++ b/server/agent-msg-filter.c @@ -22,10 +22,12 @@ #include "red_common.h" #include "agent-msg-filter.h" -void agent_msg_filter_init(struct AgentMsgFilter *filter, int copy_paste) +void agent_msg_filter_init(struct AgentMsgFilter *filter, + int copy_paste, int discard_all) { memset(filter, 0, sizeof(*filter)); filter->copy_paste_enabled = copy_paste; + filter->discard_all = discard_all; } int agent_msg_filter_process_data(struct AgentMsgFilter *filter, @@ -61,19 +63,23 @@ data_to_read: return AGENT_MSG_FILTER_PROTO_ERROR; } - switch (msg_header.type) { - case VD_AGENT_CLIPBOARD: - case VD_AGENT_CLIPBOARD_GRAB: - case VD_AGENT_CLIPBOARD_REQUEST: - case VD_AGENT_CLIPBOARD_RELEASE: - if (filter->copy_paste_enabled) { + if (filter->discard_all) { + filter->result = AGENT_MSG_FILTER_DISCARD; + } else { + switch (msg_header.type) { + case VD_AGENT_CLIPBOARD: + case VD_AGENT_CLIPBOARD_GRAB: + case VD_AGENT_CLIPBOARD_REQUEST: + case VD_AGENT_CLIPBOARD_RELEASE: + if (filter->copy_paste_enabled) { + filter->result = AGENT_MSG_FILTER_OK; + } else { + filter->result = AGENT_MSG_FILTER_DISCARD; + } + break; + default: filter->result = AGENT_MSG_FILTER_OK; - } else { - filter->result = AGENT_MSG_FILTER_DISCARD; } - break; - default: - filter->result = AGENT_MSG_FILTER_OK; } filter->msg_data_to_read = msg_header.size; |