summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPierre Ossman <ossman@cendio.se>2006-05-26 07:24:25 +0000
committerPierre Ossman <ossman@cendio.se>2006-05-26 07:24:25 +0000
commitd142408f5c83d2fcdac802cfa9a5eeec14d88df1 (patch)
tree869281dedd8da51a0a1b8bf85337178fa6127563 /src
parent099304a0d4604712261e66bffd32f0c5042329a0 (diff)
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
Diffstat (limited to 'src')
-rw-r--r--src/polyp/internal.h1
-rw-r--r--src/polyp/stream.c29
2 files changed, 10 insertions, 20 deletions
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;
}