From 11c8b811f3dee0a0e4c816226946e7a11b80629f Mon Sep 17 00:00:00 2001 From: Peter Kjellerstedt Date: Wed, 17 Jun 2009 20:52:48 +0200 Subject: [PATCH] rtsp: Normalize lines (remove extra whitespace) before parsing. --- gst-libs/gst/rtsp/gstrtspconnection.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/gst-libs/gst/rtsp/gstrtspconnection.c b/gst-libs/gst/rtsp/gstrtspconnection.c index d12b694..7c8c780 100644 --- a/gst-libs/gst/rtsp/gstrtspconnection.c +++ b/gst-libs/gst/rtsp/gstrtspconnection.c @@ -1706,6 +1706,25 @@ parse_error: } } +/* convert all consecutive whitespace to a single space */ +static void +normalize_line (guint8 * buffer) +{ + while (*buffer) { + if (g_ascii_isspace (*buffer)) { + guint8 *tmp; + + *buffer++ = ' '; + for (tmp = buffer; g_ascii_isspace (*tmp); tmp++) { + } + if (buffer != tmp) + memmove (buffer, tmp, strlen ((gchar *) tmp) + 1); + } else { + buffer++; + } + } +} + /* returns: * GST_RTSP_OK when a complete message was read. * GST_RTSP_EEOF: when the socket is closed @@ -1803,6 +1822,7 @@ build_next (GstRTSPBuilder * builder, GstRTSPMessage * message, } /* we have a line */ + normalize_line (builder->buffer); if (builder->line == 0) { /* first line, check for response status */ if (memcmp (builder->buffer, "RTSP", 4) == 0 || -- 2.7.4