Hello community,
here is the log from the commit of package gstreamer-rtsp-server for openSUSE:Factory checked in at 2017-02-03 16:27:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gstreamer-rtsp-server (Old)
and /work/SRC/openSUSE:Factory/.gstreamer-rtsp-server.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gstreamer-rtsp-server"
Changes:
--------
--- /work/SRC/openSUSE:Factory/gstreamer-rtsp-server/gstreamer-rtsp-server.changes 2017-01-10 10:44:57.370884609 +0100
+++ /work/SRC/openSUSE:Factory/.gstreamer-rtsp-server.new/gstreamer-rtsp-server.changes 2017-02-03 17:42:01.439989403 +0100
@@ -1,0 +2,6 @@
+Mon Jan 30 16:48:37 UTC 2017 - zaitor@opensuse.org
+
+- Update to version 1.10.3:
+ + Bugs fixed: bgo#755329, bgo#776343, bgo#776345.
+
+-------------------------------------------------------------------
Old:
----
gst-rtsp-server-1.10.2.tar.xz
New:
----
gst-rtsp-server-1.10.3.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gstreamer-rtsp-server.spec ++++++
--- /var/tmp/diff_new_pack.dgRO1T/_old 2017-02-03 17:42:01.783940720 +0100
+++ /var/tmp/diff_new_pack.dgRO1T/_new 2017-02-03 17:42:01.787940154 +0100
@@ -18,7 +18,7 @@
Name: gstreamer-rtsp-server
%define _name gst-rtsp-server
-Version: 1.10.2
+Version: 1.10.3
Release: 0
Summary: GStreamer-based RTSP server library
License: LGPL-2.0+
@@ -27,9 +27,9 @@
Source: http://gstreamer.freedesktop.org/src/gst-rtsp-server/%{_name}-%{version}.tar.xz
BuildRequires: gstreamer-plugins-good >= 1.10.0
BuildRequires: pkgconfig(gobject-introspection-1.0) >= 1.31.1
-BuildRequires: pkgconfig(gstreamer-1.0) >= 1.10.0
-BuildRequires: pkgconfig(gstreamer-plugins-bad-1.0) >= 1.10.0
-BuildRequires: pkgconfig(gstreamer-plugins-base-1.0) >= 1.10.0
+BuildRequires: pkgconfig(gstreamer-1.0) >= 1.10.3
+BuildRequires: pkgconfig(gstreamer-plugins-bad-1.0) >= 1.10.3
+BuildRequires: pkgconfig(gstreamer-plugins-base-1.0) >= 1.10.3
BuildRequires: pkgconfig(libcgroup) >= 0.26
BuildRoot: %{_tmppath}/%{name}-%{version}-build
++++++ gst-rtsp-server-1.10.2.tar.xz -> gst-rtsp-server-1.10.3.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-rtsp-server-1.10.2/ChangeLog new/gst-rtsp-server-1.10.3/ChangeLog
--- old/gst-rtsp-server-1.10.2/ChangeLog 2016-11-29 14:59:15.000000000 +0100
+++ new/gst-rtsp-server-1.10.3/ChangeLog 2017-01-30 14:59:17.000000000 +0100
@@ -1,9 +1,98 @@
+=== release 1.10.3 ===
+
+2017-01-30 Sebastian Dröge
+
+ * configure.ac:
+ releasing 1.10.3
+
+2017-01-19 14:57:19 +0200 Sebastian Dröge
+
+ * gst/rtsp-server/rtsp-client.c:
+ rtsp-client: Also handle the (S|G)ET_PARAMETER case of size==0 || !data as keep-alive
+ If there is no Content-Length header, no body would be allocated and the
+ '\0' would also not be appended to the body.
+
+2017-01-19 14:24:07 +0200 Sebastian Dröge
+
+ * gst/rtsp-server/rtsp-client.c:
+ rtsp-client: Fix handling of keep-alive GET_PARAMETER/SET_PARAMETER
+ While they logically have 0 bytes length, GstRTSPConnection is appending
+ a '\0' to everything making the size be 1 instead.
+
+2017-01-10 08:34:50 +0100 Patricia Muscalu
+
+ * gst/rtsp-server/rtsp-stream.c:
+ rtsp-stream: corrected if-statement in _get_server_port()
+ This bug was accidentally introduced while fixing a segfault
+ in _get_server_port() function.
+ https://bugzilla.gnome.org/show_bug.cgi?id=776345
+
+2017-01-09 14:12:05 +0100 Patricia Muscalu
+
+ * gst/rtsp-server/rtsp-stream.c:
+ * tests/check/gst/stream.c:
+ rtsp-stream: fixed segmenation fault in _get_server_port()
+ Calling function gst_rtsp_stream_get_server_port() results in
+ segmenation fault in the RTP/RTSP/TCP case.
+ Port that the server will use to receive RTCP makes only
+ sense in the UDP case, however the function should handle
+ the TCP case in a nicer way.
+ https://bugzilla.gnome.org/show_bug.cgi?id=776345
+
+2016-12-21 13:41:50 +0100 Patricia Muscalu
+
+ * gst/rtsp-server/rtsp-stream.c:
+ * tests/check/gst/rtspserver.c:
+ rtsp-stream: Fixed TCP transport case
+ Make sure that the appsink element is actually added to
+ the bin before trying to link it with the elements in it.
+ https://bugzilla.gnome.org/show_bug.cgi?id=776343
+
+2016-12-01 18:04:34 +0200 Sebastian Dröge
+
+ * gst/rtsp-server/rtsp-media-factory.c:
+ rtsp-media-factory: Don't create a pipeline for the media pipeline string
+ We're going to put a pipeline into a pipeline otherwise, which is not
+ exactly ideal.
+
+2016-10-25 15:41:28 +0300 Kseniia Vasilchuk
+
+ * gst/rtsp-server/rtsp-media.c:
+ media: Fix race condition around finish_unprepare() if called multiple time
+ https://bugzilla.gnome.org/show_bug.cgi?id=755329
+
+2016-12-02 15:40:09 +0100 Edward Hervey
+
+ * gst/rtsp-server/rtsp-media.c:
+ media: Fix pt map caps
+ Since decryption is handled within rtpbin, all outcoming stream
+ caps will be application/x-rtp (i.e. regular rtp)
+ Fixes RECORD with SRTP streams
+
+2016-12-02 15:38:04 +0100 Edward Hervey
+
+ * gst/rtsp-server/rtsp-media-factory.c:
+ media-factory: Create media objects with the proper transport mode
+ The function called immediately afterwards (collect_streams()) will
+ need it to work properly
+
+2016-11-30 14:06:36 +1100 Jan Schmidt
+
+ * gst/rtsp-sink/gstrtspclientsink.c:
+ rtspclientsink: Don't leave stale pointer after unref
+ Fix a warning on shutdown - don't keep a pointer to an
+ alread-unreffed object.
+
=== release 1.10.2 ===
-2016-11-29 Sebastian Dröge
+2016-11-29 16:22:26 +0200 Sebastian Dröge
+ * ChangeLog:
+ * NEWS:
+ * RELEASE:
* configure.ac:
- releasing 1.10.2
+ * gst-rtsp-server.doap:
+ Release 1.10.2
2016-11-21 23:29:56 +1100 Matthew Waters
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-rtsp-server-1.10.2/Makefile.in new/gst-rtsp-server-1.10.3/Makefile.in
--- old/gst-rtsp-server-1.10.2/Makefile.in 2016-11-29 13:26:05.000000000 +0100
+++ new/gst-rtsp-server-1.10.3/Makefile.in 2017-01-30 12:38:27.000000000 +0100
@@ -194,7 +194,7 @@
$(top_srcdir)/common/cruft.mak $(top_srcdir)/common/po.mak \
$(top_srcdir)/common/release.mak AUTHORS COPYING COPYING.LIB \
ChangeLog INSTALL NEWS README TODO compile config.guess \
- config.sub depcomp install-sh ltmain.sh missing
+ config.sub install-sh ltmain.sh missing
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-rtsp-server-1.10.2/NEWS new/gst-rtsp-server-1.10.3/NEWS
--- old/gst-rtsp-server-1.10.2/NEWS 2016-11-29 15:00:03.000000000 +0100
+++ new/gst-rtsp-server-1.10.3/NEWS 2017-01-30 15:00:27.000000000 +0100
@@ -1,8 +1,8 @@
# GStreamer 1.10 Release Notes
GStreamer 1.10.0 was originally released on 1st November 2016.
-The latest bug-fix release in the 1.10 series is [1.10.2](#1.10.2) and was
-released on 29 November 2016.
+The latest bug-fix release in the 1.10 series is [1.10.3](#1.10.3) and was
+released on 30 January 2017.
The GStreamer team is proud to announce a new major feature release in the
stable 1.x API series of your favourite cross-platform multimedia framework!
@@ -13,7 +13,7 @@
See [https://gstreamer.freedesktop.org/releases/1.10/][latest] for the latest
version of this document.
-*Last updated: Tuesday 29 Nov 2016, 12:30 UTC [(log)][gitlog]*
+*Last updated: Monday 30 Jan 2017, 12:00 UTC [(log)][gitlog]*
[latest]: https://gstreamer.freedesktop.org/releases/1.10/
[gitlog]: https://cgit.freedesktop.org/gstreamer/www/log/src/htdocs/releases/1.10/rele...
@@ -1103,7 +1103,7 @@
### 1.10.2
-The first 1.10 bug-fix release (1.10.2) was released on 29 November 2016.
+The second 1.10 bug-fix release (1.10.2) was released on 29 November 2016.
This release only contains bugfixes and it should be safe to update from 1.10.x.
#### Major bugfixes in 1.10.2
@@ -1111,7 +1111,9 @@
- Security-relevant bugfix in the FLI/FLX/FLC decoder (CVE-2016-9634,
CVE-2016-9635, CVE-2016-9636)
- Various fixes for crashes, assertions and other failures on fuzzed input
- files (among others, thanks to Hanno Böck for testing and reporting)
+ files. Among others, thanks to Hanno Böck for testing and reporting
+ (CVE-2016-9807, CVE-2016-9808, CVE-2016-9809, CVE-2016-9810, CVE-2016-9811,
+ CVE-2016-9812, CVE-2016-9813).
- SAVP/SAVPF profile in gst-rtsp-server works for live streams again, and the
correct MIKEY policy message is generated
- Further OpenGL related bugfixes
@@ -1124,6 +1126,32 @@
[buglist-1.10.2]: https://bugzilla.gnome.org/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&classification=Platform&limit=0&list_id=168172&order=bug_id&product=GStreamer&query_format=advanced&resolution=FIXED&target_milestone=1.10.2
+<a name="1.10.3"></a>
+
+### 1.10.3
+
+The third 1.10 bug-fix release (1.10.3) was released on 30 January 2017.
+This release only contains bugfixes and it should be safe to update from 1.10.x.
+
+#### Major bugfixes in 1.10.3
+
+ - Various fixes for crashes, assertions, deadlocks and memory leaks on fuzzed
+ input files and in other situations
+ - Regression fixes for souphttpsrc with redirection tracking and retrying
+ - Regression fix for gst-rtsp-server not handling TCP-only medias anymore
+ - Various other bugfixes the RTP/RTSP codebase
+ - vp8enc works again on 32 bit Windows
+ - Fixes to Opus PLC handling in the decoder
+ - Fix for stream corruption in multihandlesink when removing clients
+ - gst-libav was updated to ffmpeg 3.2.2
+ - ... and many, many more!
+
+For a full list of bugfixes see [Bugzilla][buglist-1.10.3]. Note that this is
+not the full list of changes. For the full list of changes please refer to the
+GIT logs or ChangeLogs of the particular modules.
+
+[buglist-1.10.3]: https://bugzilla.gnome.org/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&classification=Platform&limit=0&list_id=187054&order=bug_id&product=GStreamer&query_format=advanced&resolution=FIXED&target_milestone=1.10.3
+
## Known Issues
- iOS builds with iOS 6 SDK and old C++ STL. You need to select iOS 6 instead
@@ -1134,8 +1162,6 @@
- Building applications with Android NDK r13 on Windows does not work. Other
platforms and earlier/later versions of the NDK are not affected.
[Bug #772842](https://bugzilla.gnome.org/show_bug.cgi?id=772842)
-- vp8enc crashes on 32 bit Windows, but was working fine in 1.6. 64 bit Windows is unaffected.
- [Bug #763663](https://bugzilla.gnome.org/show_bug.cgi?id=763663)
## Schedule for 1.12
@@ -1144,9 +1170,9 @@
of 1.11/1.12 will happen in the git master branch.
The plan for the 1.12 development cycle is yet to be confirmed, but it is
-expected that feature freeze will be around early/mid-January,
+expected that feature freeze will be around early/mid-February,
followed by several 1.11 pre-releases and the new 1.12 stable release
-in March.
+in April.
1.12 will be backwards-compatible to the stable 1.10, 1.8, 1.6, 1.4, 1.2 and
1.0 release series.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-rtsp-server-1.10.2/RELEASE new/gst-rtsp-server-1.10.3/RELEASE
--- old/gst-rtsp-server-1.10.2/RELEASE 2016-11-29 14:59:40.000000000 +0100
+++ new/gst-rtsp-server-1.10.3/RELEASE 2017-01-30 14:59:42.000000000 +0100
@@ -1,7 +1,7 @@
-Release notes for GStreamer RTSP Server Library 1.10.2
+Release notes for GStreamer RTSP Server Library 1.10.3
-The GStreamer team is proud to announce the second bugfix release in the stable
+The GStreamer team is proud to announce the third bugfix release in the stable
1.10 release series of your favourite cross-platform multimedia framework!
@@ -15,8 +15,9 @@
Bugs fixed in this release
- * 765673 : udpsrc error: getsockname failed: could not get local address: Socket operation on non-socket
- * 770239 : SAVP doesn't seem to work when restreaming an RTSP source
+ * 755329 : Race condition around finish_unprepare
+ * 776343 : gst-rtsp-server: TCP transport does not work
+ * 776345 : gst-rtsp-server: segmentation fault when trying to get server port in TCP transport case
==== Download ====
@@ -53,7 +54,9 @@
Contributors to this release
- * Göran Jönsson
- * Matthew Waters
- * Tim-Philipp Müller
+ * Edward Hervey
+ * Jan Schmidt
+ * Kseniia Vasilchuk
+ * Patricia Muscalu
+ * Sebastian Dröge
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-rtsp-server-1.10.2/configure new/gst-rtsp-server-1.10.3/configure
--- old/gst-rtsp-server-1.10.2/configure 2016-11-29 13:26:05.000000000 +0100
+++ new/gst-rtsp-server-1.10.3/configure 2017-01-30 12:38:26.000000000 +0100
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for GStreamer RTSP Server Library 1.10.2.
+# Generated by GNU Autoconf 2.69 for GStreamer RTSP Server Library 1.10.3.
#
# Report bugs to http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer.
#
@@ -591,8 +591,8 @@
# Identity of this package.
PACKAGE_NAME='GStreamer RTSP Server Library'
PACKAGE_TARNAME='gst-rtsp-server'
-PACKAGE_VERSION='1.10.2'
-PACKAGE_STRING='GStreamer RTSP Server Library 1.10.2'
+PACKAGE_VERSION='1.10.3'
+PACKAGE_STRING='GStreamer RTSP Server Library 1.10.3'
PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer'
PACKAGE_URL=''
@@ -1541,7 +1541,7 @@
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures GStreamer RTSP Server Library 1.10.2 to adapt to many kinds of systems.
+\`configure' configures GStreamer RTSP Server Library 1.10.3 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1613,7 +1613,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of GStreamer RTSP Server Library 1.10.2:";;
+ short | recursive ) echo "Configuration of GStreamer RTSP Server Library 1.10.3:";;
esac
cat <<\_ACEOF
@@ -1812,7 +1812,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-GStreamer RTSP Server Library configure 1.10.2
+GStreamer RTSP Server Library configure 1.10.3
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2090,7 +2090,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by GStreamer RTSP Server Library $as_me 1.10.2, which was
+It was created by GStreamer RTSP Server Library $as_me 1.10.3, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -3067,7 +3067,7 @@
# Define the identity of the package.
PACKAGE='gst-rtsp-server'
- VERSION='1.10.2'
+ VERSION='1.10.3'
cat >>confdefs.h <<_ACEOF
@@ -3278,9 +3278,9 @@
- PACKAGE_VERSION_MAJOR=$(echo 1.10.2 | cut -d'.' -f1)
- PACKAGE_VERSION_MINOR=$(echo 1.10.2 | cut -d'.' -f2)
- PACKAGE_VERSION_MICRO=$(echo 1.10.2 | cut -d'.' -f3)
+ PACKAGE_VERSION_MAJOR=$(echo 1.10.3 | cut -d'.' -f1)
+ PACKAGE_VERSION_MINOR=$(echo 1.10.3 | cut -d'.' -f2)
+ PACKAGE_VERSION_MICRO=$(echo 1.10.3 | cut -d'.' -f3)
@@ -3291,7 +3291,7 @@
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking nano version" >&5
$as_echo_n "checking nano version... " >&6; }
- NANO=$(echo 1.10.2 | cut -d'.' -f4)
+ NANO=$(echo 1.10.3 | cut -d'.' -f4)
if test x"$NANO" = x || test "x$NANO" = "x0" ; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: 0 (release)" >&5
@@ -8120,10 +8120,10 @@
done
- GST_CURRENT=1002
+ GST_CURRENT=1003
GST_REVISION=0
- GST_AGE=1002
- GST_LIBVERSION=1002:0:1002
+ GST_AGE=1003
+ GST_LIBVERSION=1003:0:1003
@@ -18891,7 +18891,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by GStreamer RTSP Server Library $as_me 1.10.2, which was
+This file was extended by GStreamer RTSP Server Library $as_me 1.10.3, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -18957,7 +18957,7 @@
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-GStreamer RTSP Server Library config.status 1.10.2
+GStreamer RTSP Server Library config.status 1.10.3
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-rtsp-server-1.10.2/configure.ac new/gst-rtsp-server-1.10.3/configure.ac
--- old/gst-rtsp-server-1.10.2/configure.ac 2016-11-29 13:26:02.000000000 +0100
+++ new/gst-rtsp-server-1.10.3/configure.ac 2017-01-30 12:20:08.000000000 +0100
@@ -2,7 +2,7 @@
dnl initialize autoconf
dnl when going to/from release please set the nano (fourth number) right !
dnl releases only do Wall, cvs and prerelease does Werror too
-AC_INIT([GStreamer RTSP Server Library], [1.10.2],
+AC_INIT([GStreamer RTSP Server Library], [1.10.3],
[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],
[gst-rtsp-server])
AG_GST_INIT
@@ -53,7 +53,7 @@
dnl 1.10.9 (who knows) => 1009
dnl
dnl sets GST_LT_LDFLAGS
-AS_LIBTOOL(GST, 1002, 0, 1002)
+AS_LIBTOOL(GST, 1003, 0, 1003)
dnl *** required versions of GStreamer stuff ***
GST_REQ=1.10.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-rtsp-server-1.10.2/docs/libs/html/index.html new/gst-rtsp-server-1.10.3/docs/libs/html/index.html
--- old/gst-rtsp-server-1.10.2/docs/libs/html/index.html 2016-11-29 15:00:11.000000000 +0100
+++ new/gst-rtsp-server-1.10.3/docs/libs/html/index.html 2017-01-30 15:00:36.000000000 +0100
@@ -15,7 +15,7 @@
<div>
<div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">GStreamer RTSP Server Reference Manual</p></th></tr></table></div>
<div><p class="releaseinfo">
- for GStreamer RTSP Server 1.10.2
+ for GStreamer RTSP Server 1.10.3
</p></div>
</div>
<hr>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-rtsp-server-1.10.2/gst/rtsp-server/rtsp-client.c new/gst-rtsp-server-1.10.3/gst/rtsp-server/rtsp-client.c
--- old/gst-rtsp-server-1.10.2/gst/rtsp-server/rtsp-client.c 2016-11-04 18:07:56.000000000 +0100
+++ new/gst-rtsp-server-1.10.3/gst/rtsp-server/rtsp-client.c 2017-01-19 14:03:04.000000000 +0100
@@ -985,8 +985,8 @@
if (res != GST_RTSP_OK)
goto bad_request;
- if (size == 0) {
- /* no body, keep-alive request */
+ if (size == 0 || !data || strlen ((char *) data) == 0) {
+ /* no body (or only '\0'), keep-alive request */
send_generic_response (client, GST_RTSP_STS_OK, ctx);
} else {
/* there is a body, handle the params */
@@ -1022,8 +1022,8 @@
if (res != GST_RTSP_OK)
goto bad_request;
- if (size == 0) {
- /* no body, keep-alive request */
+ if (size == 0 || !data || strlen ((char *) data) == 0) {
+ /* no body (or only '\0'), keep-alive request */
send_generic_response (client, GST_RTSP_STS_OK, ctx);
} else {
/* there is a body, handle the params */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-rtsp-server-1.10.2/gst/rtsp-server/rtsp-media-factory.c new/gst-rtsp-server-1.10.3/gst/rtsp-server/rtsp-media-factory.c
--- old/gst-rtsp-server-1.10.2/gst/rtsp-server/rtsp-media-factory.c 2016-11-04 18:07:22.000000000 +0100
+++ new/gst-rtsp-server-1.10.3/gst/rtsp-server/rtsp-media-factory.c 2016-12-05 10:08:47.000000000 +0100
@@ -1414,7 +1414,9 @@
goto no_launch;
/* parse the user provided launch line */
- element = gst_parse_launch (priv->launch, &error);
+ element =
+ gst_parse_launch_full (priv->launch, NULL, GST_PARSE_FLAG_PLACE_IN_BIN,
+ &error);
if (element == NULL)
goto parse_error;
@@ -1467,7 +1469,9 @@
GST_RTSP_MEDIA_FACTORY_UNLOCK (factory);
/* create a new empty media */
- media = g_object_new (media_gtype, "element", element, NULL);
+ media =
+ g_object_new (media_gtype, "element", element, "transport-mode",
+ factory->priv->transport_mode, NULL);
gst_rtsp_media_collect_streams (media);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-rtsp-server-1.10.2/gst/rtsp-server/rtsp-media.c new/gst-rtsp-server-1.10.3/gst/rtsp-server/rtsp-media.c
--- old/gst-rtsp-server-1.10.2/gst/rtsp-server/rtsp-media.c 2016-11-04 18:07:22.000000000 +0100
+++ new/gst-rtsp-server-1.10.3/gst/rtsp-server/rtsp-media.c 2016-12-05 10:08:47.000000000 +0100
@@ -3050,6 +3050,10 @@
g_rec_mutex_unlock (&priv->state_lock);
set_state (media, GST_STATE_NULL);
g_rec_mutex_lock (&priv->state_lock);
+
+ if (priv->status != GST_RTSP_MEDIA_STATUS_UNPREPARING)
+ return;
+
remove_fakesink (priv);
for (i = 0; i < priv->streams->len; i++) {
@@ -3168,6 +3172,7 @@
if (klass->unprepare)
success = klass->unprepare (media);
} else {
+ gst_rtsp_media_set_status (media, GST_RTSP_MEDIA_STATUS_UNPREPARING);
finish_unprepare (media);
}
g_rec_mutex_unlock (&priv->state_lock);
@@ -3375,7 +3380,7 @@
}
for (i = 0; i < medias_len; i++) {
- const gchar *proto, *media_type;
+ const gchar *proto;
const GstSDPMedia *sdp_media = gst_sdp_message_get_media (sdp, i);
GstRTSPStream *stream;
gint j, formats_len;
@@ -3394,16 +3399,12 @@
}
if (g_str_equal (proto, "RTP/AVP")) {
- media_type = "application/x-rtp";
profile = GST_RTSP_PROFILE_AVP;
} else if (g_str_equal (proto, "RTP/SAVP")) {
- media_type = "application/x-srtp";
profile = GST_RTSP_PROFILE_SAVP;
} else if (g_str_equal (proto, "RTP/AVPF")) {
- media_type = "application/x-rtp";
profile = GST_RTSP_PROFILE_AVPF;
} else if (g_str_equal (proto, "RTP/SAVPF")) {
- media_type = "application/x-srtp";
profile = GST_RTSP_PROFILE_SAVPF;
} else {
GST_ERROR ("%p: unsupported profile '%s' for stream %d", media, proto, i);
@@ -3440,7 +3441,7 @@
gst_sdp_media_attributes_to_caps (sdp_media, caps);
s = gst_caps_get_structure (caps, 0);
- gst_structure_set_name (s, media_type);
+ gst_structure_set_name (s, "application/x-rtp");
gst_rtsp_stream_set_pt_map (stream, pt, caps);
gst_caps_unref (caps);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-rtsp-server-1.10.2/gst/rtsp-server/rtsp-stream.c new/gst-rtsp-server-1.10.3/gst/rtsp-server/rtsp-stream.c
--- old/gst-rtsp-server-1.10.2/gst/rtsp-server/rtsp-stream.c 2016-11-29 13:26:02.000000000 +0100
+++ new/gst-rtsp-server-1.10.3/gst/rtsp-server/rtsp-stream.c 2017-01-19 14:03:04.000000000 +0100
@@ -1525,15 +1525,20 @@
priv = stream->priv;
g_return_if_fail (priv->joined_bin != NULL);
+ if (server_port) {
+ server_port->min = 0;
+ server_port->max = 0;
+ }
+
g_mutex_lock (&priv->lock);
if (family == G_SOCKET_FAMILY_IPV4) {
- if (server_port) {
+ if (server_port && priv->server_addr_v4) {
server_port->min = priv->server_addr_v4->port;
server_port->max =
priv->server_addr_v4->port + priv->server_addr_v4->n_ports - 1;
}
} else {
- if (server_port) {
+ if (server_port && priv->server_addr_v6) {
server_port->min = priv->server_addr_v6->port;
server_port->max =
priv->server_addr_v6->port + priv->server_addr_v6->n_ports - 1;
@@ -2462,6 +2467,7 @@
}
} else if (is_tcp) {
/* only appsink needed, link it to the session */
+ gst_bin_add (bin, priv->appsink[i]);
pad = gst_element_get_static_pad (priv->appsink[i], "sink");
gst_pad_link (priv->send_src[i], pad);
gst_object_unref (pad);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-rtsp-server-1.10.2/gst/rtsp-sink/gstrtspclientsink.c new/gst-rtsp-server-1.10.3/gst/rtsp-sink/gstrtspclientsink.c
--- old/gst-rtsp-server-1.10.2/gst/rtsp-sink/gstrtspclientsink.c 2016-11-04 18:07:22.000000000 +0100
+++ new/gst-rtsp-server-1.10.3/gst/rtsp-sink/gstrtspclientsink.c 2016-12-05 10:08:47.000000000 +0100
@@ -1559,8 +1559,10 @@
context->stream = NULL;
}
- if (context->srtcpparams)
+ if (context->srtcpparams) {
gst_caps_unref (context->srtcpparams);
+ context->srtcpparams = NULL;
+ }
g_free (context->conninfo.location);
context->conninfo.location = NULL;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-rtsp-server-1.10.2/gst-rtsp-server.doap new/gst-rtsp-server-1.10.3/gst-rtsp-server.doap
--- old/gst-rtsp-server-1.10.2/gst-rtsp-server.doap 2016-11-29 13:26:02.000000000 +0100
+++ new/gst-rtsp-server-1.10.3/gst-rtsp-server.doap 2017-01-30 12:25:08.000000000 +0100
@@ -32,6 +32,16 @@
<release>
<Version>
+ <revision>1.10.3</revision>
+ <branch>1.10</branch>
+ <name></name>
+ <created>2017-01-30</created>
+ <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-rtsp-server/gst-rtsp-server-1.10.3.tar.xz" />
+ </Version>
+ </release>
+
+ <release>
+ <Version>
<revision>1.10.2</revision>
<branch>1.10</branch>
<name></name>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-rtsp-server-1.10.2/gst-rtsp.spec new/gst-rtsp-server-1.10.3/gst-rtsp.spec
--- old/gst-rtsp-server-1.10.2/gst-rtsp.spec 2016-11-29 13:26:07.000000000 +0100
+++ new/gst-rtsp-server-1.10.3/gst-rtsp.spec 2017-01-30 12:38:29.000000000 +0100
@@ -1,7 +1,7 @@
%define gst_majorminor 1.0
Name: gstreamer-rtsp-server
-Version: 1.10.2
+Version: 1.10.3
Release: 1%{?dist}
Summary: GStreamer based RTSP server
Vendor: Collabora Multimedia
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-rtsp-server-1.10.2/tests/check/gst/rtspserver.c new/gst-rtsp-server-1.10.3/tests/check/gst/rtspserver.c
--- old/gst-rtsp-server-1.10.2/tests/check/gst/rtspserver.c 2016-11-04 18:07:22.000000000 +0100
+++ new/gst-rtsp-server-1.10.3/tests/check/gst/rtspserver.c 2016-12-22 13:38:57.000000000 +0100
@@ -191,6 +191,40 @@
GST_DEBUG ("rtsp server listening on port %d", test_port);
}
+static void
+start_tcp_server (void)
+{
+ GstRTSPMountPoints *mounts;
+ gchar *service;
+ GstRTSPMediaFactory *factory;
+
+ mounts = gst_rtsp_server_get_mount_points (server);
+
+ factory = gst_rtsp_media_factory_new ();
+
+ gst_rtsp_media_factory_set_protocols (factory, GST_RTSP_LOWER_TRANS_TCP);
+ gst_rtsp_media_factory_set_launch (factory,
+ "( " VIDEO_PIPELINE " " AUDIO_PIPELINE " )");
+ gst_rtsp_mount_points_add_factory (mounts, TEST_MOUNT_POINT, factory);
+ g_object_unref (mounts);
+
+ /* set port to any */
+ gst_rtsp_server_set_service (server, "0");
+
+ /* attach to default main context */
+ source_id = gst_rtsp_server_attach (server, NULL);
+ fail_if (source_id == 0);
+
+ /* get port */
+ service = gst_rtsp_server_get_service (server);
+ test_port = atoi (service);
+ fail_unless (test_port != 0);
+ g_free (service);
+
+ GST_DEBUG ("rtsp server listening on port %d", test_port);
+
+}
+
/* start the testing rtsp server for RECORD mode */
static GstRTSPMediaFactory *
start_record_server (const gchar * launch_line)
@@ -296,6 +330,7 @@
read_response (GstRTSPConnection * conn)
{
GstRTSPMessage *response = NULL;
+ GstRTSPMsgType type;
if (gst_rtsp_message_new (&response) != GST_RTSP_OK) {
GST_DEBUG ("failed to create response object");
@@ -306,8 +341,8 @@
gst_rtsp_message_free (response);
return NULL;
}
- fail_unless (gst_rtsp_message_get_type (response) ==
- GST_RTSP_MESSAGE_RESPONSE);
+ type = gst_rtsp_message_get_type (response);
+ fail_unless (type == GST_RTSP_MESSAGE_RESPONSE || type == GST_RTSP_MESSAGE_DATA);
return response;
}
@@ -325,6 +360,7 @@
GstRTSPMessage *response;
GstRTSPStatusCode code;
gchar *value;
+ GstRTSPMsgType msg_type;
/* create request */
request = create_request (conn, method, control);
@@ -351,6 +387,19 @@
/* read response */
response = read_response (conn);
+ fail_unless (response != NULL);
+
+ msg_type = gst_rtsp_message_get_type (response);
+
+ if (msg_type == GST_RTSP_MESSAGE_DATA) {
+ do {
+ gst_rtsp_message_free (response);
+ response = read_response (conn);
+ msg_type = gst_rtsp_message_get_type (response);
+ } while (msg_type == GST_RTSP_MESSAGE_DATA);
+ }
+
+ fail_unless (msg_type == GST_RTSP_MESSAGE_RESPONSE);
/* check status line */
gst_rtsp_message_parse_response (response, &code, NULL, NULL);
@@ -1105,6 +1154,76 @@
GST_END_TEST;
+GST_START_TEST (test_play_tcp)
+{
+ GstRTSPConnection *conn;
+ GstSDPMessage *sdp_message = NULL;
+ const GstSDPMedia *sdp_media;
+ const gchar *video_control;
+ const gchar *audio_control;
+ GstRTSPRange client_ports = { 0 };
+ gchar *session = NULL;
+ GstRTSPTransport *video_transport = NULL;
+ GstRTSPTransport *audio_transport = NULL;
+
+ start_tcp_server ();
+
+ conn = connect_to_server (test_port, TEST_MOUNT_POINT);
+
+ /* send DESCRIBE request */
+ sdp_message = do_describe (conn, TEST_MOUNT_POINT);
+
+ /* get control strings from DESCRIBE response */
+ fail_unless (gst_sdp_message_medias_len (sdp_message) == 2);
+ sdp_media = gst_sdp_message_get_media (sdp_message, 0);
+ video_control = gst_sdp_media_get_attribute_val (sdp_media, "control");
+ sdp_media = gst_sdp_message_get_media (sdp_message, 1);
+ audio_control = gst_sdp_media_get_attribute_val (sdp_media, "control");
+
+ get_client_ports (&client_ports);
+
+ /* send SETUP request for the first media */
+ fail_unless (do_setup_full (conn, video_control, GST_RTSP_LOWER_TRANS_TCP,
+ &client_ports, NULL, &session, &video_transport,
+ NULL) == GST_RTSP_STS_OK);
+
+ /* check response from SETUP */
+ fail_unless (video_transport->trans == GST_RTSP_TRANS_RTP);
+ fail_unless (video_transport->profile == GST_RTSP_PROFILE_AVP);
+ fail_unless (video_transport->lower_transport == GST_RTSP_LOWER_TRANS_TCP);
+ fail_unless (video_transport->mode_play);
+ gst_rtsp_transport_free (video_transport);
+
+ /* send SETUP request for the second media */
+ fail_unless (do_setup_full (conn, audio_control, GST_RTSP_LOWER_TRANS_TCP,
+ &client_ports, NULL, &session, &audio_transport,
+ NULL) == GST_RTSP_STS_OK);
+
+ /* check response from SETUP */
+ fail_unless (audio_transport->trans == GST_RTSP_TRANS_RTP);
+ fail_unless (audio_transport->profile == GST_RTSP_PROFILE_AVP);
+ fail_unless (audio_transport->lower_transport == GST_RTSP_LOWER_TRANS_TCP);
+ fail_unless (audio_transport->mode_play);
+ gst_rtsp_transport_free (audio_transport);
+
+ /* send PLAY request and check that we get 200 OK */
+ fail_unless (do_simple_request (conn, GST_RTSP_PLAY,
+ session)== GST_RTSP_STS_OK);
+
+ /* send TEARDOWN request and check that we get 200 OK */
+ fail_unless (do_simple_request (conn, GST_RTSP_TEARDOWN,
+ session) == GST_RTSP_STS_OK);
+
+ /* clean up and iterate so the clean-up can finish */
+ g_free (session);
+ gst_sdp_message_free (sdp_message);
+ gst_rtsp_connection_free (conn);
+ stop_server ();
+ iterate ();
+}
+
+GST_END_TEST;
+
GST_START_TEST (test_play_without_session)
{
GstRTSPConnection *conn;
@@ -1992,6 +2111,7 @@
tcase_add_test (tc, test_setup_with_require_header);
tcase_add_test (tc, test_setup_non_existing_stream);
tcase_add_test (tc, test_play);
+ tcase_add_test (tc, test_play_tcp);
tcase_add_test (tc, test_play_without_session);
tcase_add_test (tc, test_bind_already_in_use);
tcase_add_test (tc, test_play_multithreaded);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-rtsp-server-1.10.2/tests/check/gst/stream.c new/gst-rtsp-server-1.10.3/tests/check/gst/stream.c
--- old/gst-rtsp-server-1.10.2/tests/check/gst/stream.c 2016-11-04 18:07:22.000000000 +0100
+++ new/gst-rtsp-server-1.10.3/tests/check/gst/stream.c 2017-01-09 14:29:18.000000000 +0100
@@ -385,6 +385,47 @@
GST_END_TEST;
+GST_START_TEST (test_tcp_transport)
+{
+ GstPad *srcpad;
+ GstElement *pay;
+ GstRTSPStream *stream;
+ GstBin *bin;
+ GstElement *rtpbin;
+ GstRTSPRange server_port;
+
+ srcpad = gst_pad_new ("testsrcpad", GST_PAD_SRC);
+ fail_unless (srcpad != NULL);
+ gst_pad_set_active (srcpad, TRUE);
+ pay = gst_element_factory_make ("rtpgstpay", "testpayloader");
+ fail_unless (pay != NULL);
+ stream = gst_rtsp_stream_new (0, pay, srcpad);
+ fail_unless (stream != NULL);
+ gst_object_unref (pay);
+ gst_object_unref (srcpad);
+ rtpbin = gst_element_factory_make ("rtpbin", "testrtpbin");
+ fail_unless (rtpbin != NULL);
+ bin = GST_BIN (gst_bin_new ("testbin"));
+ fail_unless (bin != NULL);
+ fail_unless (gst_bin_add (bin, rtpbin));
+
+ /* TCP transport */
+ gst_rtsp_stream_set_protocols (stream, GST_RTSP_LOWER_TRANS_TCP);
+ fail_unless (gst_rtsp_stream_join_bin (stream, bin, rtpbin, GST_STATE_NULL));
+
+ /* port that the server will use to receive RTCP makes only sense in the UDP
+ * case so verify that the received server port is 0 in the TCP case */
+ gst_rtsp_stream_get_server_port (stream, &server_port, G_SOCKET_FAMILY_IPV4);
+ fail_unless_equals_int (server_port.min, 0);
+ fail_unless_equals_int (server_port.max, 0);
+
+ fail_unless (gst_rtsp_stream_leave_bin (stream, bin, rtpbin));
+ gst_object_unref (bin);
+ gst_object_unref (stream);
+}
+
+GST_END_TEST;
+
static Suite *
rtspstream_suite (void)
{
@@ -398,6 +439,7 @@
tcase_add_test (tc, test_multicast_address_and_unicast_udp);
tcase_add_test (tc, test_allocate_udp_ports_multicast);
tcase_add_test (tc, test_allocate_udp_ports_client_settings);
+ tcase_add_test (tc, test_tcp_transport);
return s;
}