spice-protocol/spice
Hans de Goede c0808ab884 vd_agent: Add a new VD_AGENT_CLIENT_DISCONNECTED message
Client -> agent messages can spawn multiple VDIChunks. When this happens
the agent re-assembles the chunks into a complete VDAgentMessage before
processing it. The server only guarentees coherency at the chunk level,
so it is not possible for a partial chunk to get delivered to the agent.

But it is possible for some chunks of a VDAgentMessage to be delivered to
the agent followed by a client to disconnect without the rest of the
VDAgentMessage being delivered!

This will leave the agent in a wrong state, and the first messages send to it
by the next client to connect will get seen as the rest of the VDAgentMessage
from the previous client.

This patch introduces a new VD_AGENT_CLIENT_DISCONNECTED message which the
server will send from the VDP_SERVER_PORT on client disconnect, on which the
agent can then reset its VDP_CLIENT_PORT state.

Note that no capability is added for this, since capabilities are tracked
between the client and the agent only. The server will simply always send
this message on client disconnect, relying on older agents discarding the
message since it has an unknown type (which both the windows and linux agents
already do).

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2013-03-05 14:41:09 +01:00
..
barrier.h define spice_mb MemoryBarrier for WIN64 2011-02-02 11:34:19 +02:00
controller_prot.h controller: add proxy message 2013-01-28 14:29:15 +01:00
end-packed.h mingw32: specify packing alignment to 1 byte, to override -mms-bitfield 2010-12-29 16:13:55 +01:00
enums.h Add port channel enum values 2012-11-30 13:41:55 +01:00
error_codes.h Clean up and standardize header guards 2010-02-04 16:47:14 +01:00
foreign_menu_prot.h build: include spice/types.h in foreign_menu_prot.h 2012-02-23 22:18:34 +01:00
ipc_ring.h Fix up SPICE_SPICE typo 2010-02-04 18:10:50 +01:00
macros.h macros: define INLINE 2011-05-12 11:45:58 +03:00
Makefile.am Add QXL_ESCAPE_SET_CUSTOM_DISPLAY 2012-05-11 18:19:25 +02:00
protocol.h Add port channel enum values 2012-11-30 13:41:55 +01:00
qxl_dev.h qxl_dev.h: add client monitors configuration notification to guest 2012-09-12 16:54:08 +03:00
qxl_windows.h Add QXL_ESCAPE_SET_CUSTOM_DISPLAY 2012-05-11 18:19:25 +02:00
start-packed.h mingw32: specify packing alignment to 1 byte, to override -mms-bitfield 2010-12-29 16:13:55 +01:00
stats.h Fix SPICE_STAT_SHM_NAME to be portable 2012-01-08 13:44:20 +02:00
types.h Add byteswapping macros 2010-05-19 16:02:40 +02:00
vd_agent.h vd_agent: Add a new VD_AGENT_CLIENT_DISCONNECTED message 2013-03-05 14:41:09 +01:00
vdi_dev.h Always include using <spice/foo.h> style 2010-02-04 16:47:23 +01:00