[Spice-commits] server/dcc.c
Frediano Ziglio
fziglio at kemper.freedesktop.org
Wed May 4 09:49:45 UTC 2016
server/dcc.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
New commits:
commit 8a5ba34c018331dc97feb87672d96c40f319be02
Author: Francois Gouget <fgouget at codeweavers.com>
Date: Wed May 4 10:48:58 2016 +0100
server: Correctly handle and trace stream report errors
We may get stream reports after the stream has been closed, and even, in
extreme cases, after a new stream has started reusing the same stream
id. Neither case should cause the server to crash.
So restore dcc_handle_stream_report() to how it was before being moved
to dcc.c.
Signed-off-by: Francois Gouget <fgouget at codeweavers.com>
Acked-by: Victor Toso <victortoso at redhat.com>
diff --git a/server/dcc.c b/server/dcc.c
index 038d74d..3be1e96 100644
--- a/server/dcc.c
+++ b/server/dcc.c
@@ -1387,15 +1387,25 @@ static int dcc_handle_stream_report(DisplayChannelClient *dcc,
StreamAgent *agent;
if (report->stream_id >= NUM_STREAMS) {
+ spice_warning("stream_report: invalid stream id %u",
+ report->stream_id);
return FALSE;
}
agent = &dcc->stream_agents[report->stream_id];
if (!agent->mjpeg_encoder) {
+ spice_info("stream_report: no encoder for stream id %u. "
+ "The stream has probably been destroyed",
+ report->stream_id);
return TRUE;
}
- spice_return_val_if_fail(report->unique_id == agent->report_id, TRUE);
+ if (report->unique_id != agent->report_id) {
+ spice_warning("stream_report: unique id mismatch: local (%u) != msg (%u) "
+ "The old stream was probably replaced by a new one",
+ agent->report_id, report->unique_id);
+ return TRUE;
+ }
mjpeg_encoder_client_stream_report(agent->mjpeg_encoder,
report->num_frames,
More information about the Spice-commits
mailing list