[Spice-devel] [spice v14 01/29] server: Correctly handle and trace stream report errors
Frediano Ziglio
fziglio at redhat.com
Wed May 4 09:53:33 UTC 2016
>
> 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>
Merged
Frediano
> ---
> server/dcc.c | 12 +++++++++++-
> 1 file changed, 11 insertions(+), 1 deletion(-)
>
> 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,
> --
> 2.8.0.rc3
>
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/spice-devel
>
More information about the Spice-devel
mailing list