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 - [email protected]
+
+- 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 <[email protected]>
+
+       * configure.ac:
+         releasing 1.10.3
+
+2017-01-19 14:57:19 +0200  Sebastian Dröge <[email protected]>
+
+       * 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 <[email protected]>
+
+       * 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 <[email protected]>
+
+       * 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 <[email protected]>
+
+       * 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 <[email protected]>
+
+       * 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 <[email protected]>
+
+       * 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 <[email protected]>
+
+       * 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 <[email protected]>
+
+       * 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 <[email protected]>
+
+       * 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 <[email protected]>
+
+       * 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 <[email protected]>
+2016-11-29 16:22:26 +0200  Sebastian Dröge <[email protected]>
 
+       * 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 <[email protected]>
 
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/release-notes-1.10.md
@@ -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;
 }


Reply via email to