The agent will send an information about its version to the client. --- depends on http://lists.freedesktop.org/archives/spice-devel/2014-October/017654.html --- src/vdagentd.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/vdagentd.c b/src/vdagentd.c index b5c7d14..4f3efdb 100644 --- a/src/vdagentd.c +++ b/src/vdagentd.c @@ -108,6 +108,23 @@ static void send_capabilities(struct vdagent_virtio_port *vport, free(caps); } +static void do_client_information(struct vdagent_virtio_port *vport, + VDAgentMessage *message_header, VDAgentInformation *information_msg) +{ + VDAgentInformation *msg; + uint32_t size; + if (information_msg->type == VD_AGENT_INFORMATION_VERSION) { + size = sizeof(VDAgentInformation) + strlen(VERSION) + 1; + msg = g_malloc0(size); + msg->type = VD_AGENT_INFORMATION_VERSION; + memcpy(msg->data, VERSION, strlen(VERSION)); + vdagent_virtio_port_write(vport, VDP_CLIENT_PORT, + VD_AGENT_INFORMATION, 0, + (const uint8_t *) msg, size); + g_free(msg); + } +} + static void do_client_disconnect(void) { if (client_connected) { @@ -379,6 +396,11 @@ int virtio_port_read_complete( syslog(LOG_DEBUG, "Set max clipboard: %d", msg->max); max_clipboard = msg->max; break; + case VD_AGENT_INFORMATION: + if (message_header->size < sizeof(VDAgentInformation)) + goto size_error; + do_client_information(vport, message_header, (VDAgentInformation *) data); + break; default: syslog(LOG_WARNING, "unknown message type %d, ignoring", message_header->type); -- 1.9.3 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/spice-devel