From d142408f5c83d2fcdac802cfa9a5eeec14d88df1 Mon Sep 17 00:00:00 2001 From: Pierre Ossman Date: Fri, 26 May 2006 07:24:25 +0000 Subject: Explicitly check version number when determining which fields are in a stream create response. git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@978 fefdeb5f-60dc-0310-8127-8f9354f1896f --- src/polyp/internal.h | 1 - src/polyp/stream.c | 29 ++++++++++------------------- 2 files changed, 10 insertions(+), 20 deletions(-) (limited to 'src') diff --git a/src/polyp/internal.h b/src/polyp/internal.h index d88a1e5b..80c28616 100644 --- a/src/polyp/internal.h +++ b/src/polyp/internal.h @@ -100,7 +100,6 @@ struct pa_stream { char *name; pa_buffer_attr buffer_attr; - int buffer_attr_from_server; pa_sample_spec sample_spec; pa_channel_map channel_map; pa_stream_flags_t flags; diff --git a/src/polyp/stream.c b/src/polyp/stream.c index 17884ed3..e3f40a3f 100644 --- a/src/polyp/stream.c +++ b/src/polyp/stream.c @@ -84,7 +84,6 @@ pa_stream *pa_stream_new(pa_context *c, const char *name, const pa_sample_spec * s->requested_bytes = 0; s->state = PA_STREAM_UNCONNECTED; memset(&s->buffer_attr, 0, sizeof(s->buffer_attr)); - s->buffer_attr_from_server = 0; s->peek_memchunk.index = 0; s->peek_memchunk.length = 0; @@ -407,38 +406,29 @@ void pa_create_stream_callback(pa_pdispatch *pd, uint32_t command, PA_GCC_UNUSED goto finish; } - if (!pa_tagstruct_eof(t)) { - + if (pa_context_get_server_protocol_version(s->context) >= 9) { if (s->direction == PA_STREAM_PLAYBACK) { - - /* This is a server 0.9.0 or later */ if (pa_tagstruct_getu32(t, &s->buffer_attr.maxlength) < 0 || pa_tagstruct_getu32(t, &s->buffer_attr.tlength) < 0 || pa_tagstruct_getu32(t, &s->buffer_attr.prebuf) < 0 || - pa_tagstruct_getu32(t, &s->buffer_attr.minreq) < 0 || - !pa_tagstruct_eof(t)) { + pa_tagstruct_getu32(t, &s->buffer_attr.minreq) < 0) { pa_context_fail(s->context, PA_ERR_PROTOCOL); goto finish; } - - s->buffer_attr_from_server = 1; } else if (s->direction == PA_STREAM_RECORD) { - - /* This is a server 0.9.0 or later */ if (pa_tagstruct_getu32(t, &s->buffer_attr.maxlength) < 0 || - pa_tagstruct_getu32(t, &s->buffer_attr.fragsize) < 0 || - !pa_tagstruct_eof(t)) { + pa_tagstruct_getu32(t, &s->buffer_attr.fragsize) < 0) { pa_context_fail(s->context, PA_ERR_PROTOCOL); goto finish; } - - s->buffer_attr_from_server = 1; - } else { - pa_context_fail(s->context, PA_ERR_PROTOCOL); - goto finish; } } + if (!pa_tagstruct_eof(t)) { + pa_context_fail(s->context, PA_ERR_PROTOCOL); + goto finish; + } + if (s->direction == PA_STREAM_RECORD) { assert(!s->record_memblockq); @@ -1375,7 +1365,8 @@ const pa_buffer_attr* pa_stream_get_buffer_attr(pa_stream *s) { PA_CHECK_VALIDITY_RETURN_NULL(s->context, s->state == PA_STREAM_READY, PA_ERR_BADSTATE); PA_CHECK_VALIDITY_RETURN_NULL(s->context, s->direction != PA_STREAM_UPLOAD, PA_ERR_BADSTATE); - PA_CHECK_VALIDITY_RETURN_NULL(s->context, s->buffer_attr_from_server, PA_ERR_NODATA); + PA_CHECK_VALIDITY_RETURN_NULL(s->context, + pa_context_get_server_protocol_version(s->context) >= 9, PA_ERR_NODATA); return &s->buffer_attr; } -- cgit