File transfer and Copy & Paste can be disabled, tell it the client by adjusting the agent capabilities. Require newer protocol for VD_AGENT_CLEAR_CAPABILITY() and VD_AGENT_CAP_FILE_XFER_DISABLED. Related: rhbz#1373725 --- configure.ac | 2 +- server/reds.c | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index a78b4ece..c155c355 100644 --- a/configure.ac +++ b/configure.ac @@ -142,7 +142,7 @@ AS_IF([test x"$have_smartcard" = "xyes"], [ AS_VAR_APPEND([SPICE_REQUIRES], [" libcacard >= 0.1.2"]) ]) -SPICE_PROTOCOL_MIN_VER=0.12.12 +SPICE_PROTOCOL_MIN_VER=0.12.13 PKG_CHECK_MODULES([SPICE_PROTOCOL], [spice-protocol >= $SPICE_PROTOCOL_MIN_VER]) AC_SUBST([SPICE_PROTOCOL_MIN_VER]) diff --git a/server/reds.c b/server/reds.c index 3127b188..02e7e702 100644 --- a/server/reds.c +++ b/server/reds.c @@ -733,6 +733,18 @@ static void vdi_port_read_buf_free(RedPipeItem *base) } } +static void reds_update_agent_caps(RedsState *reds, VDAgentAnnounceCapabilities *capabilities) +{ + if (!reds->config->agent_file_xfer) { + VD_AGENT_SET_CAPABILITY(capabilities->caps, VD_AGENT_CAP_FILE_XFER_DISABLED); + } + if (!reds->config->agent_copypaste) { + VD_AGENT_CLEAR_CAPABILITY(capabilities->caps, VD_AGENT_CAP_CLIPBOARD); + VD_AGENT_CLEAR_CAPABILITY(capabilities->caps, VD_AGENT_CAP_CLIPBOARD_BY_DEMAND); + VD_AGENT_CLEAR_CAPABILITY(capabilities->caps, VD_AGENT_CAP_CLIPBOARD_SELECTION); + } +} + /* reads from the device till completes reading a message that is addressed to the client, * or otherwise, when reading from the device fails */ static RedPipeItem *vdi_port_read_one_msg_from_device(RedCharDevice *self, @@ -795,7 +807,10 @@ static RedPipeItem *vdi_port_read_one_msg_from_device(RedCharDevice *self, dev->priv->read_state = VDI_PORT_READ_STATE_GET_BUFF; } switch (vdi_port_read_buf_process(reds->agent_dev, dispatch_buf)) { - case AGENT_MSG_FILTER_CAPABILITIES: + case AGENT_MSG_FILTER_CAPABILITIES: { + VDAgentMessage *agent_message = (VDAgentMessage *) dispatch_buf->data; + reds_update_agent_caps(reds, (VDAgentAnnounceCapabilities *) agent_message->data); + } /* fall through */ case AGENT_MSG_FILTER_OK: return &dispatch_buf->base; -- 2.11.0 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel