diff options
author | Johan Hedberg <johan.hedberg@nokia.com> | 2008-12-20 18:27:30 +0200 |
---|---|---|
committer | Johan Hedberg <johan.hedberg@nokia.com> | 2008-12-20 18:27:30 +0200 |
commit | 1c7291138ae3d25d7f34803e4f354a90d012f6a1 (patch) | |
tree | 91e0bab8098a03b05fb5910860fdd8bfa8cb9be8 /audio/gstavdtpsink.c | |
parent | c1c058b689a5cfd54b8092392b0223a7008fb63e (diff) |
Fix length header values in messages
Diffstat (limited to 'audio/gstavdtpsink.c')
-rw-r--r-- | audio/gstavdtpsink.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/audio/gstavdtpsink.c b/audio/gstavdtpsink.c index bf35407c..45a53b5d 100644 --- a/audio/gstavdtpsink.c +++ b/audio/gstavdtpsink.c @@ -786,6 +786,7 @@ static gboolean gst_avdtp_sink_get_capabilities(GstAvdtpSink *self) return FALSE; } + rsp->h.length = 0; io_error = gst_avdtp_sink_audioservice_expect(self, &rsp->h, BT_GET_CAPABILITIES); if (io_error != G_IO_ERROR_NONE) { @@ -931,6 +932,7 @@ static gboolean gst_avdtp_sink_stream_start(GstAvdtpSink *self) return FALSE; } + rsp->h.length = sizeof(*rsp); io_error = gst_avdtp_sink_audioservice_expect(self, &rsp->h, BT_START_STREAM); if (io_error != G_IO_ERROR_NONE) { @@ -939,6 +941,7 @@ static gboolean gst_avdtp_sink_stream_start(GstAvdtpSink *self) return FALSE; } + ind->h.length = sizeof(*ind); io_error = gst_avdtp_sink_audioservice_expect(self, &ind->h, BT_NEW_STREAM); if (io_error != G_IO_ERROR_NONE) { @@ -1069,6 +1072,7 @@ static gboolean gst_avdtp_sink_configure(GstAvdtpSink *self, return FALSE; } + req->h.length += req->codec.length - sizeof(req->codec); io_error = gst_avdtp_sink_audioservice_send(self, &req->h); if (io_error != G_IO_ERROR_NONE) { GST_ERROR_OBJECT(self, "Error ocurred while sending " @@ -1076,6 +1080,7 @@ static gboolean gst_avdtp_sink_configure(GstAvdtpSink *self, return FALSE; } + rsp->h.length = sizeof(*rsp); io_error = gst_avdtp_sink_audioservice_expect(self, &rsp->h, BT_SET_CONFIGURATION); if (io_error != G_IO_ERROR_NONE) { @@ -1226,9 +1231,12 @@ static GIOError gst_avdtp_sink_audioservice_send( GIOError error; gsize written; const char *type, *name; + uint16_t length; - error = g_io_channel_write(self->server, (const gchar*) msg, - BT_SUGGESTED_BUFFER_SIZE, &written); + length = msg->length ? msg->length : BT_SUGGESTED_BUFFER_SIZE; + + error = g_io_channel_write(self->server, (const gchar*) msg, length, + &written); if (error != G_IO_ERROR_NONE) GST_ERROR_OBJECT(self, "Error sending data to audio service:" " %s(%d)", strerror(errno), errno); @@ -1248,9 +1256,12 @@ static GIOError gst_avdtp_sink_audioservice_recv( GIOError status; gsize bytes_read; const char *type, *name; + uint16_t length; + + length = inmsg->length ? inmsg->length : BT_SUGGESTED_BUFFER_SIZE; - status = g_io_channel_read(self->server, (gchar*) inmsg, - BT_SUGGESTED_BUFFER_SIZE, &bytes_read); + status = g_io_channel_read(self->server, (gchar*) inmsg, length, + &bytes_read); if (status != G_IO_ERROR_NONE) { GST_ERROR_OBJECT(self, "Error receiving data from " "audio service"); |