mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-24 01:00:37 +00:00
gst/multipart/multipartdemux.c: Accept leading whitespace before the boundary
Original commit message from CVS: Patch by: Sjoerd Simons <sjoerd at luon dot net> * gst/multipart/multipartdemux.c: (multipart_parse_header): Accept leading whitespace before the boundary This patch makes the demuxer allow some whitespace before the actual boundary. This makes the demuxer work with the ``old'' gstreamer multipartmuxer again (which placed an extra \n before the start of the stream) Fixes #349068.
This commit is contained in:
parent
5880332110
commit
52c986d876
2 changed files with 28 additions and 3 deletions
11
ChangeLog
11
ChangeLog
|
@ -1,3 +1,14 @@
|
|||
2006-08-17 Wim Taymans <wim@fluendo.com>
|
||||
|
||||
Patch by: Sjoerd Simons <sjoerd at luon dot net>
|
||||
|
||||
* gst/multipart/multipartdemux.c: (multipart_parse_header):
|
||||
Accept leading whitespace before the boundary
|
||||
This patch makes the demuxer allow some whitespace before the actual
|
||||
boundary. This makes the demuxer work with the ``old'' gstreamer
|
||||
multipartmuxer again (which placed an extra \n before the start
|
||||
of the stream) Fixes #349068.
|
||||
|
||||
2006-08-17 Wim Taymans <wim@fluendo.com>
|
||||
|
||||
* gst/rtp/gstrtph264depay.c: (gst_rtp_h264_depay_process):
|
||||
|
|
|
@ -334,13 +334,27 @@ multipart_parse_header (GstMultipartDemux * multipart)
|
|||
data = gst_adapter_peek (multipart->adapter, datalen);
|
||||
dataend = data + datalen;
|
||||
|
||||
/* Skip leading whitespace, pos endposition should at least leave space for
|
||||
* the boundary and a \n */
|
||||
for (pos = (guint8 *) data; pos < dataend - 4 && g_ascii_isspace (*pos);
|
||||
pos++);
|
||||
|
||||
if (pos >= dataend - 4) {
|
||||
return MULTIPART_NEED_MORE_DATA;
|
||||
}
|
||||
|
||||
if (G_UNLIKELY (pos[0] != '-' || pos[1] != '-')) {
|
||||
GST_DEBUG_OBJECT (multipart, "No boundary available");
|
||||
goto wrong_header;
|
||||
}
|
||||
|
||||
/* First the boundary */
|
||||
if (!get_line_end (data, dataend, &end, &next))
|
||||
if (!get_line_end (pos, dataend, &end, &next))
|
||||
return MULTIPART_NEED_MORE_DATA;
|
||||
|
||||
/* Ignore the leading -- */
|
||||
boundary_len = end - data - 2;
|
||||
boundary = (gchar *) data + 2;
|
||||
boundary_len = end - pos - 2;
|
||||
boundary = (gchar *) pos + 2;
|
||||
if (boundary_len < 1) {
|
||||
GST_DEBUG_OBJECT (multipart, "No boundary available");
|
||||
goto wrong_header;
|
||||
|
|
Loading…
Reference in a new issue