summaryrefslogtreecommitdiffstats
path: root/server/agent-msg-filter.c
diff options
context:
space:
mode:
authorHans de Goede <hdegoede@redhat.com>2011-04-01 14:19:25 +0200
committerHans de Goede <hdegoede@redhat.com>2011-04-04 11:30:30 +0200
commit3accb60240dbfd9a2a7627aef879f403cd517612 (patch)
tree0b4189bfe5e0b6a19128243310526b7c1e6b43a2 /server/agent-msg-filter.c
parent66cf0e28b3e7bcc5db3d1faf1de0437a6d2878d1 (diff)
downloadspice-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.c30
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;