Hello community,

here is the log from the commit of package gst-rtsp-server for openSUSE:Factory 
checked in at 2016-06-19 10:49:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gst-rtsp-server (Old)
 and      /work/SRC/openSUSE:Factory/.gst-rtsp-server.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gst-rtsp-server"

Changes:
--------
--- /work/SRC/openSUSE:Factory/gst-rtsp-server/gst-rtsp-server.changes  
2016-05-03 10:16:46.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.gst-rtsp-server.new/gst-rtsp-server.changes     
2016-06-19 10:49:41.000000000 +0200
@@ -1,0 +2,9 @@
+Wed Jun 15 14:27:03 UTC 2016 - zai...@opensuse.org
+
+- Update to version 1.8.1:
+  + bgo#764744: Crashes when multiple udpsrc are created for each
+    client on a shared media, misses tracking and cleanup.
+  + bgo#766619: Space between ; and timeout= in session header is
+    not RFC2326 compliant.
+
+-------------------------------------------------------------------

Old:
----
  gst-rtsp-server-1.8.1.tar.xz

New:
----
  gst-rtsp-server-1.8.2.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ gst-rtsp-server.spec ++++++
--- /var/tmp/diff_new_pack.7oaZYQ/_old  2016-06-19 10:49:42.000000000 +0200
+++ /var/tmp/diff_new_pack.7oaZYQ/_new  2016-06-19 10:49:42.000000000 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           gst-rtsp-server
-Version:        1.8.1
+Version:        1.8.2
 Release:        0
 Summary:        GStreamer based RTSP server library
 License:        LGPL-2.0+

++++++ gst-rtsp-server-1.8.1.tar.xz -> gst-rtsp-server-1.8.2.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-rtsp-server-1.8.1/ChangeLog 
new/gst-rtsp-server-1.8.2/ChangeLog
--- old/gst-rtsp-server-1.8.1/ChangeLog 2016-04-20 17:16:52.000000000 +0200
+++ new/gst-rtsp-server-1.8.2/ChangeLog 2016-06-09 10:27:42.000000000 +0200
@@ -1,9 +1,46 @@
+=== release 1.8.2 ===
+
+2016-06-09  Sebastian Dröge <sl...@coaxion.net>
+
+       * configure.ac:
+         releasing 1.8.2
+
+2016-05-18 16:48:44 +0100  Ian <ian.arkver....@gmail.com>
+
+       * gst/rtsp-server/rtsp-session.c:
+         rtsp-session: RFC2326 does not allow a space between ; and timeout in 
the Session header
+         This works with rtspsrc and live555, but fails with e.g. ffmpeg.
+         https://bugzilla.gnome.org/show_bug.cgi?id=766619
+
+2016-04-25 08:55:25 -0400  Jake Foytik <jake.foy...@ipconfigure.com>
+
+       * gst/rtsp-server/rtsp-stream.c:
+       * tests/check/gst/rtspserver.c:
+       * tests/check/gst/stream.c:
+         rtsp-stream: Fix crash on cleanup with shared media and multiple 
udpsrc
+         - Unicast udpsrcs are now managed in a hash table. This allows for 
proper cleanup in with shared streams and fixes a memory leak.
+         - Unicast udpsrcs are now properly cleaned up when shared connections 
exit. See the update_transport() function.
+         - Create unit test for shared media.
+         https://bugzilla.gnome.org/show_bug.cgi?id=764744
+
+2016-04-11 10:55:23 +0300  Sebastian Dröge <sebast...@centricular.com>
+
+       * gst/rtsp-server/rtsp-stream.c:
+         rtsp-stream: Always bind to ANY when address is a multicast address 
and not only on Windows
+         For IPv6 addresses, binding to a multicast group does not work on 
Linux
+         either. Always bind to ANY and then later join the multicast group.
+         https://bugzilla.gnome.org/show_bug.cgi?id=764679
+
 === release 1.8.1 ===
 
-2016-04-20  Sebastian Dröge <sl...@coaxion.net>
+2016-04-20 18:33:39 +0300  Sebastian Dröge <sebast...@centricular.com>
 
+       * ChangeLog:
+       * NEWS:
+       * RELEASE:
        * configure.ac:
-         releasing 1.8.1
+       * gst-rtsp-server.doap:
+         Release 1.8.1
 
 === release 1.8.0 ===
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-rtsp-server-1.8.1/NEWS 
new/gst-rtsp-server-1.8.2/NEWS
--- old/gst-rtsp-server-1.8.1/NEWS      2016-04-20 17:17:47.000000000 +0200
+++ new/gst-rtsp-server-1.8.2/NEWS      2016-06-09 10:28:27.000000000 +0200
@@ -1,25 +1,27 @@
-### 1.8.1
+### 1.8.2
 
-The first 1.8 bug-fix release (1.8.1) was released on 20 April 2016.
+The first 1.8 bug-fix release (1.8.2) was released on 9 June 2016.
 This release only contains bugfixes and it should be safe to update from 1.8.0.
 
-#### Major bugfixes in 1.8.1
+#### Major bugfixes in 1.8.2
 
- - Fix app compilation with Android NDK r11 and newer
- - Fix compilation of nvenc plugin against latest NVIDIA SDK 6.0
- - Fix regression in avdeinterlace
- - Fix memory corruption in scaletempo element with S16 input
- - Fix regression in qtdemux with MSE streams
- - Fix glitches at the start with all audio sinks except for pulsesink
- - Fix regression with encrypted HLS streams
- - Fix automatic multithreaded decoding of VP8/9 video
- - Fix deadlock in HTTP adaptive streams when scrub-seeking
- - Fix regression in RTSP source with SRTP
- - Add support for SRTP rollover counters in the RTSP source
- - Add support for HiDPI ("Retina") screens in caopengllayersink
- - ... and many more!
+ - Fix vp8enc and flacenc segmentation faults on Windows
+ - Fix Android build failure due to BSD sed on OS X
+ - Fix Android build failure with applications targetting API > 20
+ - Fix playback of live MS SmoothStreaming streams
+ - Fix various issues with vtdec and caopengllayersink on OS X
+ - Fix severe performance degradation in various image decoders
+ - Fix sample rate negotiation in opusdec
+ - Fix regression in typefind, causing deadlocks in some situations
+ - Fix mpegtsmux to set PTS on all output buffers again
+ - Fix extraction of frame dimensions from SDP in RTP JPEG depayloader
+ - Fix failure in v4l2videodec when setting of format fails after starting
+ - ... and many, many more!
+
+For a full list of bugfixes see [Bugzilla][buglist-1.8.2]. 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.
 
-For a full list of bugfixes see [Bugzilla][buglist-1.8.1].
+[buglist-1.8.2]: 
https://bugzilla.gnome.org/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&classification=Platform&limit=0&list_id=130196&order=bug_id&product=GStreamer&query_format=advanced&resolution=FIXED&target_milestone=1.8.2
 
-[buglist-1.8.1]: 
https://bugzilla.gnome.org/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&classification=Platform&limit=0&list_id=117422&order=bug_id&product=GStreamer&query_format=advanced&resolution=FIXED&target_milestone=1.8.1
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-rtsp-server-1.8.1/RELEASE 
new/gst-rtsp-server-1.8.2/RELEASE
--- old/gst-rtsp-server-1.8.1/RELEASE   2016-04-20 17:17:20.000000000 +0200
+++ new/gst-rtsp-server-1.8.2/RELEASE   2016-06-09 10:28:10.000000000 +0200
@@ -1,11 +1,11 @@
 
-Release notes for GStreamer RTSP Server Library 1.8.1
+Release notes for GStreamer RTSP Server Library 1.8.2
 
-The GStreamer team is proud to announce the first bugfix release in the stable
+The GStreamer team is proud to announce the second bugfix release in the stable
 1.8 release series of your favourite cross-platform multimedia framework!
 
 
-This release only contains bugfixes and it is safe to update from 1.8.0. For a
+This release only contains bugfixes and it is safe to update from 1.8.1. For a
 full list of bugfixes see Bugzilla.
 
 
@@ -13,6 +13,11 @@
 
   
 
+Bugs fixed in this release
+     
+      * 764744 : Crashes when multiple udpsrc are created for each client on a 
shared media, misses tracking and cleanup
+      * 766619 : Space between ; and timeout= in session header is not RFC2326 
compliant.
+
 ==== Download ====
 
 You can find source releases of gst-rtsp-server in the download
@@ -48,5 +53,7 @@
         
 Contributors to this release
     
+      * Ian
+      * Jake Foytik
       * Sebastian Dröge
  
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-rtsp-server-1.8.1/config.guess 
new/gst-rtsp-server-1.8.2/config.guess
--- old/gst-rtsp-server-1.8.1/config.guess      2016-04-20 14:16:57.000000000 
+0200
+++ new/gst-rtsp-server-1.8.2/config.guess      2016-06-09 09:23:34.000000000 
+0200
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
-#   Copyright 1992-2015 Free Software Foundation, Inc.
+#   Copyright 1992-2016 Free Software Foundation, Inc.
 
-timestamp='2015-08-20'
+timestamp='2016-04-02'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -27,7 +27,7 @@
 # Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
 #
 # You can get the latest version of this script from:
-# 
http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
 #
 # Please send patches to <config-patc...@gnu.org>.
 
@@ -50,7 +50,7 @@
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
-Copyright 1992-2015 Free Software Foundation, Inc.
+Copyright 1992-2016 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -237,6 +237,10 @@
        UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
        echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
        exit ;;
+    *:LibertyBSD:*:*)
+       UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
+       echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE}
+       exit ;;
     *:ekkoBSD:*:*)
        echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
        exit ;;
@@ -268,42 +272,42 @@
        ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) 
processor.*$/\1/p' | head -n 1`
        case "$ALPHA_CPU_TYPE" in
            "EV4 (21064)")
-               UNAME_MACHINE="alpha" ;;
+               UNAME_MACHINE=alpha ;;
            "EV4.5 (21064)")
-               UNAME_MACHINE="alpha" ;;
+               UNAME_MACHINE=alpha ;;
            "LCA4 (21066/21068)")
-               UNAME_MACHINE="alpha" ;;
+               UNAME_MACHINE=alpha ;;
            "EV5 (21164)")
-               UNAME_MACHINE="alphaev5" ;;
+               UNAME_MACHINE=alphaev5 ;;
            "EV5.6 (21164A)")
-               UNAME_MACHINE="alphaev56" ;;
+               UNAME_MACHINE=alphaev56 ;;
            "EV5.6 (21164PC)")
-               UNAME_MACHINE="alphapca56" ;;
+               UNAME_MACHINE=alphapca56 ;;
            "EV5.7 (21164PC)")
-               UNAME_MACHINE="alphapca57" ;;
+               UNAME_MACHINE=alphapca57 ;;
            "EV6 (21264)")
-               UNAME_MACHINE="alphaev6" ;;
+               UNAME_MACHINE=alphaev6 ;;
            "EV6.7 (21264A)")
-               UNAME_MACHINE="alphaev67" ;;
+               UNAME_MACHINE=alphaev67 ;;
            "EV6.8CB (21264C)")
-               UNAME_MACHINE="alphaev68" ;;
+               UNAME_MACHINE=alphaev68 ;;
            "EV6.8AL (21264B)")
-               UNAME_MACHINE="alphaev68" ;;
+               UNAME_MACHINE=alphaev68 ;;
            "EV6.8CX (21264D)")
-               UNAME_MACHINE="alphaev68" ;;
+               UNAME_MACHINE=alphaev68 ;;
            "EV6.9A (21264/EV69A)")
-               UNAME_MACHINE="alphaev69" ;;
+               UNAME_MACHINE=alphaev69 ;;
            "EV7 (21364)")
-               UNAME_MACHINE="alphaev7" ;;
+               UNAME_MACHINE=alphaev7 ;;
            "EV7.9 (21364A)")
-               UNAME_MACHINE="alphaev79" ;;
+               UNAME_MACHINE=alphaev79 ;;
        esac
        # A Pn.n version is a patched version.
        # A Vn.n version is a released version.
        # A Tn.n version is a released field test version.
        # A Xn.n version is an unreleased experimental baselevel.
        # 1.2 uses "1.2" for uname -r.
-       echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 
's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+       echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 
's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
        # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
        exitcode=$?
        trap '' 0
@@ -376,16 +380,16 @@
        exit ;;
     i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
        eval $set_cc_for_build
-       SUN_ARCH="i386"
+       SUN_ARCH=i386
        # If there is a compiler, see if it is configured for 64-bit objects.
        # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
        # This test works for both compilers.
-       if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+       if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
            if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
-               (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+               (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
                grep IS_64BIT_ARCH >/dev/null
            then
-               SUN_ARCH="x86_64"
+               SUN_ARCH=x86_64
            fi
        fi
        echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
@@ -410,7 +414,7 @@
        exit ;;
     sun*:*:4.2BSD:*)
        UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 
2>/dev/null`
-       test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+       test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3
        case "`/bin/arch`" in
            sun3)
                echo m68k-sun-sunos${UNAME_RELEASE}
@@ -635,13 +639,13 @@
                    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
                    case "${sc_cpu_version}" in
-                     523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
-                     528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+                     523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
+                     528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
                      532)                      # CPU_PA_RISC2_0
                        case "${sc_kernel_bits}" in
-                         32) HP_ARCH="hppa2.0n" ;;
-                         64) HP_ARCH="hppa2.0w" ;;
-                         '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
+                         32) HP_ARCH=hppa2.0n ;;
+                         64) HP_ARCH=hppa2.0w ;;
+                         '') HP_ARCH=hppa2.0 ;;   # HP-UX 10.20
                        esac ;;
                    esac
                fi
@@ -680,11 +684,11 @@
                    exit (0);
                }
 EOF
-                   (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && 
HP_ARCH=`$dummy`
+                   (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && 
HP_ARCH=`$dummy`
                    test -z "$HP_ARCH" && HP_ARCH=hppa
                fi ;;
        esac
-       if [ ${HP_ARCH} = "hppa2.0w" ]
+       if [ ${HP_ARCH} = hppa2.0w ]
        then
            eval $set_cc_for_build
 
@@ -697,12 +701,12 @@
            # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
            # => hppa64-hp-hpux11.23
 
-           if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+           if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) |
                grep -q __LP64__
            then
-               HP_ARCH="hppa2.0w"
+               HP_ARCH=hppa2.0w
            else
-               HP_ARCH="hppa64"
+               HP_ARCH=hppa64
            fi
        fi
        echo ${HP_ARCH}-hp-hpux${HPUX_REV}
@@ -807,14 +811,14 @@
        echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
        exit ;;
     F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
-       FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 
'abcdefghijklmnopqrstuvwxyz'`
-       FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 
'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+       FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ 
abcdefghijklmnopqrstuvwxyz`
+       FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ 
abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
        exit ;;
     5000:UNIX_System_V:4.*:*)
-       FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 
'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-       FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 
'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+       FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ 
abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
+       FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ 
abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
        echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
        exit ;;
     i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
@@ -896,7 +900,7 @@
        exit ;;
     *:GNU/*:*:*)
        # other systems with GNU libc and userland
-       echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' 
| tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
+       echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' 
| tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
        exit ;;
     i*86:Minix:*:*)
        echo ${UNAME_MACHINE}-pc-minix
@@ -919,7 +923,7 @@
          EV68*) UNAME_MACHINE=alphaev68 ;;
        esac
        objdump --private-headers /bin/sh | grep -q ld.so.1
-       if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
+       if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
        echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
        exit ;;
     arc:Linux:*:* | arceb:Linux:*:*)
@@ -965,6 +969,9 @@
     ia64:Linux:*:*)
        echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
        exit ;;
+    k1om:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       exit ;;
     m32r*:Linux:*:*)
        echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
        exit ;;
@@ -1120,7 +1127,7 @@
        # uname -m prints for DJGPP always 'pc', but it prints nothing about
        # the processor, so we play safe by assuming i586.
        # Note: whatever this is, it MUST be the same as what config.sub
-       # prints for the "djgpp" host, or else GDB configury will decide that
+       # prints for the "djgpp" host, or else GDB configure will decide that
        # this is a cross-build.
        echo i586-pc-msdosdjgpp
        exit ;;
@@ -1269,6 +1276,9 @@
     SX-8R:SUPER-UX:*:*)
        echo sx8r-nec-superux${UNAME_RELEASE}
        exit ;;
+    SX-ACE:SUPER-UX:*:*)
+       echo sxace-nec-superux${UNAME_RELEASE}
+       exit ;;
     Power*:Rhapsody:*:*)
        echo powerpc-apple-rhapsody${UNAME_RELEASE}
        exit ;;
@@ -1282,9 +1292,9 @@
            UNAME_PROCESSOR=powerpc
        fi
        if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
-           if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+           if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
                if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') 
| \
-                   (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+                   (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
                    grep IS_64BIT_ARCH >/dev/null
                then
                    case $UNAME_PROCESSOR in
@@ -1306,7 +1316,7 @@
        exit ;;
     *:procnto*:*:* | *:QNX:[0123456789]*:*)
        UNAME_PROCESSOR=`uname -p`
-       if test "$UNAME_PROCESSOR" = "x86"; then
+       if test "$UNAME_PROCESSOR" = x86; then
                UNAME_PROCESSOR=i386
                UNAME_MACHINE=pc
        fi
@@ -1337,7 +1347,7 @@
        # "uname -m" is not consistent, so use $cputype instead. 386
        # is converted to i386 for consistency with other x86
        # operating systems.
-       if test "$cputype" = "386"; then
+       if test "$cputype" = 386; then
            UNAME_MACHINE=i386
        else
            UNAME_MACHINE="$cputype"
@@ -1379,7 +1389,7 @@
        echo i386-pc-xenix
        exit ;;
     i*86:skyos:*:*)
-       echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ 
.*$//'
+       echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ 
.*$//'`
        exit ;;
     i*86:rdos:*:*)
        echo ${UNAME_MACHINE}-pc-rdos
@@ -1390,6 +1400,9 @@
     x86_64:VMkernel:*:*)
        echo ${UNAME_MACHINE}-unknown-esx
        exit ;;
+    amd64:Isilon\ OneFS:*:*)
+       echo x86_64-unknown-onefs
+       exit ;;
 esac
 
 cat >&2 <<EOF
@@ -1399,9 +1412,9 @@
 the operating system you are using. It is advised that you
 download the most up to date version of the config scripts from
 
-  
http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
 and
-  
http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
 
 If the version you run ($0) is already up to date, please
 send the following data and any information you think might be
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-rtsp-server-1.8.1/config.sub 
new/gst-rtsp-server-1.8.2/config.sub
--- old/gst-rtsp-server-1.8.1/config.sub        2016-04-20 14:16:57.000000000 
+0200
+++ new/gst-rtsp-server-1.8.2/config.sub        2016-06-09 09:23:34.000000000 
+0200
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Configuration validation subroutine script.
-#   Copyright 1992-2015 Free Software Foundation, Inc.
+#   Copyright 1992-2016 Free Software Foundation, Inc.
 
-timestamp='2015-08-20'
+timestamp='2016-03-30'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -33,7 +33,7 @@
 # Otherwise, we print the canonical config type on stdout and succeed.
 
 # You can get the latest version of this script from:
-# 
http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
 
 # This file is supposed to be the same for all GNU packages
 # and recognize all the CPU types, system types and aliases
@@ -53,8 +53,7 @@
 me=`echo "$0" | sed -e 's,.*/,,'`
 
 usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS
-       $0 [OPTION] ALIAS
+Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
 
 Canonicalize a configuration name.
 
@@ -68,7 +67,7 @@
 version="\
 GNU config.sub ($timestamp)
 
-Copyright 1992-2015 Free Software Foundation, Inc.
+Copyright 1992-2016 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -521,7 +520,7 @@
                basic_machine=i386-pc
                os=-aros
                ;;
-        asmjs)
+       asmjs)
                basic_machine=asmjs-unknown
                ;;
        aux)
@@ -1383,7 +1382,7 @@
              | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
              | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
              | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
-             | -bitrig* | -openbsd* | -solidbsd* \
+             | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \
              | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
              | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
              | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
@@ -1399,7 +1398,8 @@
              | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
              | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
              | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-             | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | 
-tirtos*)
+             | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \
+             | -onefs* | -tirtos*)
        # Remember, each alternative MUST END IN *, to match a version number.
                ;;
        -qnx*)
@@ -1531,6 +1531,8 @@
                ;;
        -nacl*)
                ;;
+       -ios)
+               ;;
        -none)
                ;;
        *)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-rtsp-server-1.8.1/configure 
new/gst-rtsp-server-1.8.2/configure
--- old/gst-rtsp-server-1.8.1/configure 2016-04-20 14:16:56.000000000 +0200
+++ new/gst-rtsp-server-1.8.2/configure 2016-06-09 09:23:33.000000000 +0200
@@ -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.8.1.
+# Generated by GNU Autoconf 2.69 for GStreamer RTSP Server Library 1.8.2.
 #
 # 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.8.1'
-PACKAGE_STRING='GStreamer RTSP Server Library 1.8.1'
+PACKAGE_VERSION='1.8.2'
+PACKAGE_STRING='GStreamer RTSP Server Library 1.8.2'
 PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer'
 PACKAGE_URL=''
 
@@ -1536,7 +1536,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.8.1 to adapt to many 
kinds of systems.
+\`configure' configures GStreamer RTSP Server Library 1.8.2 to adapt to many 
kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1608,7 +1608,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of GStreamer RTSP Server Library 
1.8.1:";;
+     short | recursive ) echo "Configuration of GStreamer RTSP Server Library 
1.8.2:";;
    esac
   cat <<\_ACEOF
 
@@ -1807,7 +1807,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-GStreamer RTSP Server Library configure 1.8.1
+GStreamer RTSP Server Library configure 1.8.2
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2085,7 +2085,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.8.1, which was
+It was created by GStreamer RTSP Server Library $as_me 1.8.2, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3062,7 +3062,7 @@
 
 # Define the identity of the package.
  PACKAGE='gst-rtsp-server'
- VERSION='1.8.1'
+ VERSION='1.8.2'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -3273,9 +3273,9 @@
 
 
 
-  PACKAGE_VERSION_MAJOR=$(echo 1.8.1 | cut -d'.' -f1)
-  PACKAGE_VERSION_MINOR=$(echo 1.8.1 | cut -d'.' -f2)
-  PACKAGE_VERSION_MICRO=$(echo 1.8.1 | cut -d'.' -f3)
+  PACKAGE_VERSION_MAJOR=$(echo 1.8.2 | cut -d'.' -f1)
+  PACKAGE_VERSION_MINOR=$(echo 1.8.2 | cut -d'.' -f2)
+  PACKAGE_VERSION_MICRO=$(echo 1.8.2 | cut -d'.' -f3)
 
 
 
@@ -3286,7 +3286,7 @@
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking nano version" >&5
 $as_echo_n "checking nano version... " >&6; }
 
-  NANO=$(echo 1.8.1 | cut -d'.' -f4)
+  NANO=$(echo 1.8.2 | cut -d'.' -f4)
 
   if test x"$NANO" = x || test "x$NANO" = "x0" ; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: 0 (release)" >&5
@@ -8115,10 +8115,10 @@
 done
 
 
-  GST_CURRENT=801
+  GST_CURRENT=802
   GST_REVISION=0
-  GST_AGE=801
-  GST_LIBVERSION=801:0:801
+  GST_AGE=802
+  GST_LIBVERSION=802:0:802
 
 
 
@@ -18239,7 +18239,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.8.1, which was
+This file was extended by GStreamer RTSP Server Library $as_me 1.8.2, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -18305,7 +18305,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.8.1
+GStreamer RTSP Server Library config.status 1.8.2
 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.8.1/configure.ac 
new/gst-rtsp-server-1.8.2/configure.ac
--- old/gst-rtsp-server-1.8.1/configure.ac      2016-04-20 14:16:43.000000000 
+0200
+++ new/gst-rtsp-server-1.8.2/configure.ac      2016-06-09 09:09:40.000000000 
+0200
@@ -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.8.1],
+AC_INIT([GStreamer RTSP Server Library], [1.8.2],
     [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, 801, 0, 801)
+AS_LIBTOOL(GST, 802, 0, 802)
 
 dnl *** required versions of GStreamer stuff ***
 GST_REQ=1.8.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-rtsp-server-1.8.1/docs/libs/html/index.html 
new/gst-rtsp-server-1.8.2/docs/libs/html/index.html
--- old/gst-rtsp-server-1.8.1/docs/libs/html/index.html 2016-04-20 
17:17:54.000000000 +0200
+++ new/gst-rtsp-server-1.8.2/docs/libs/html/index.html 2016-06-09 
10:28:41.000000000 +0200
@@ -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.8.1
+      for GStreamer RTSP Server 1.8.2
     </p></div>
 </div>
 <hr>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-rtsp-server-1.8.1/gst/rtsp-server/rtsp-session.c 
new/gst-rtsp-server-1.8.2/gst/rtsp-server/rtsp-session.c
--- old/gst-rtsp-server-1.8.1/gst/rtsp-server/rtsp-session.c    2016-03-24 
12:36:50.000000000 +0100
+++ new/gst-rtsp-server-1.8.2/gst/rtsp-server/rtsp-session.c    2016-05-20 
08:07:18.000000000 +0200
@@ -488,7 +488,7 @@
 
   g_mutex_lock (&priv->lock);
   if (priv->timeout_always_visible || priv->timeout != 60)
-    result = g_strdup_printf ("%s; timeout=%d", priv->sessionid, 
priv->timeout);
+    result = g_strdup_printf ("%s;timeout=%d", priv->sessionid, priv->timeout);
   else
     result = g_strdup (priv->sessionid);
   g_mutex_unlock (&priv->lock);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-rtsp-server-1.8.1/gst/rtsp-server/rtsp-stream.c 
new/gst-rtsp-server-1.8.2/gst/rtsp-server/rtsp-stream.c
--- old/gst-rtsp-server-1.8.1/gst/rtsp-server/rtsp-stream.c     2016-03-24 
12:36:50.000000000 +0100
+++ new/gst-rtsp-server-1.8.2/gst/rtsp-server/rtsp-stream.c     2016-05-04 
09:21:55.000000000 +0200
@@ -62,6 +62,18 @@
 #define GST_RTSP_STREAM_GET_PRIVATE(obj)  \
      (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GST_TYPE_RTSP_STREAM, 
GstRTSPStreamPrivate))
 
+/* Container for udpsrc elements created for a specific RTSPTransport. */
+typedef struct
+{
+  GstElement *udpsrc[2];
+} GstRTSPStreamUDPSrcs;
+
+static void
+destroy_udp_srcs_func (gpointer data)
+{
+  g_slice_free (GstRTSPStreamUDPSrcs, (GstRTSPStreamUDPSrcs *) data);
+}
+
 struct _GstRTSPStreamPrivate
 {
   GMutex lock;
@@ -94,16 +106,11 @@
   GstElement *srtpdec;
   GHashTable *keys;
 
-  /* sinks used for sending and receiving RTP and RTCP over ipv4, they share
-   * sockets */
-  GstElement *udpsrc_v4[2];
-  /* UDP sources for UDP multicast transports */
-  GstElement *udpsrc_mcast_v4[2];
+  /* Unicast UDP sources associated with RTSPTransports */
+  GHashTable *udpsrcs;
 
-  /* sinks used for sending and receiving RTP and RTCP over ipv6, they share
-   * sockets */
-  GstElement *udpsrc_v6[2];
-  /* UDP sources for UDP multicast transports */
+  /* Only allow one set of IPV4 and IPV6 multicast udpsrcs */
+  GstElement *udpsrc_mcast_v4[2];
   GstElement *udpsrc_mcast_v6[2];
 
   GstElement *udpqueue[2];
@@ -126,12 +133,10 @@
   /* server ports for sending/receiving over ipv4 */
   GstRTSPRange server_port_v4;
   GstRTSPAddress *server_addr_v4;
-  gboolean have_ipv4;
 
   /* server ports for sending/receiving over ipv6 */
   GstRTSPRange server_port_v6;
   GstRTSPAddress *server_addr_v6;
-  gboolean have_ipv6;
 
   /* multicast addresses */
   GstRTSPAddressPool *pool;
@@ -264,6 +269,8 @@
       NULL, (GDestroyNotify) gst_caps_unref);
   priv->ptmap = g_hash_table_new_full (NULL, NULL, NULL,
       (GDestroyNotify) gst_caps_unref);
+  priv->udpsrcs = g_hash_table_new_full (g_direct_hash, g_direct_equal,
+      NULL, (GDestroyNotify) destroy_udp_srcs_func);
 }
 
 static void
@@ -304,6 +311,11 @@
   g_hash_table_unref (priv->keys);
   g_hash_table_destroy (priv->ptmap);
 
+  /* We expect all udpsrcs to be cleaned up by this point. */
+  if (g_hash_table_size (priv->udpsrcs) > 0)
+    g_critical ("Unreffing udpsrcs hash table that contains elements.");
+  g_hash_table_unref (priv->udpsrcs);
+
   G_OBJECT_CLASS (gst_rtsp_stream_parent_class)->finalize (obj);
 }
 
@@ -1270,21 +1282,13 @@
     g_clear_object (&inetaddr);
     inetaddr = g_inet_address_new_from_string (addr->address);
 
-    /* On Windows it's not possible to bind to a multicast address
-     * but the OS will make sure to filter out all packets that
-     * arrive not for the multicast address the socket joined.
-     *
-     * On Linux and others it is necessary to bind to a multicast
-     * address to let the OS filter out all packets that are received
-     * on the same port but for different addresses than the multicast
-     * address
+    /* If we're supposed to bind to a multicast address, instead bind
+     * to ANY and let udpsrc later join the relevant multicast group
      */
-#ifdef G_OS_WIN32
     if (g_inet_address_get_is_multicast (inetaddr)) {
       g_object_unref (inetaddr);
       inetaddr = g_inet_address_new_any (family);
     }
-#endif
   } else {
     if (tmp_rtp != 0) {
       tmp_rtp += 2;
@@ -1428,42 +1432,63 @@
 
   g_mutex_lock (&priv->lock);
 
-  if (family == G_SOCKET_FAMILY_IPV4) {
-    if (transport == GST_RTSP_LOWER_TRANS_UDP_MCAST) {
-      if (priv->have_ipv4_mcast)
+  if (transport == GST_RTSP_LOWER_TRANS_UDP_MCAST) {
+    if (family == G_SOCKET_FAMILY_IPV4) {
+      /* Multicast IPV4 */
+      if (priv->have_ipv4_mcast) {
+        result = TRUE;
         goto done;
+      }
+
       priv->have_ipv4_mcast =
           alloc_ports_one_family (stream, G_SOCKET_FAMILY_IPV4,
           priv->udpsrc_mcast_v4, &priv->server_port_v4, ct, &priv->addr_v4,
           use_client_settings);
+      result = priv->have_ipv4_mcast;
+
     } else {
-      priv->have_ipv4 =
-          alloc_ports_one_family (stream, G_SOCKET_FAMILY_IPV4, 
priv->udpsrc_v4,
-          &priv->server_port_v4, ct, &priv->server_addr_v4,
-          use_client_settings);
-    }
-  } else {
-    if (transport == GST_RTSP_LOWER_TRANS_UDP_MCAST) {
-      if (priv->have_ipv6_mcast)
+      /* Multicast IPV6 */
+      if (priv->have_ipv6_mcast) {
+        result = TRUE;
         goto done;
+      }
+
       priv->have_ipv6_mcast =
           alloc_ports_one_family (stream, G_SOCKET_FAMILY_IPV6,
           priv->udpsrc_mcast_v6, &priv->server_port_v6, ct, &priv->addr_v6,
           use_client_settings);
+      result = priv->have_ipv6_mcast;
+    }
+  } else {
+    /* We allow multiple unicast transports, so we must maintain a table of 
the 
+     * udpsrcs created for them. */
+    GstRTSPStreamUDPSrcs *transport_udpsrcs =
+        g_slice_new0 (GstRTSPStreamUDPSrcs);
+
+    if (family == G_SOCKET_FAMILY_IPV4) {
+      /* Unicast IPV4 */
+      result =
+          alloc_ports_one_family (stream, G_SOCKET_FAMILY_IPV4,
+          transport_udpsrcs->udpsrc, &priv->server_port_v4, ct,
+          &priv->server_addr_v4, use_client_settings);
     } else {
-      if (priv->have_ipv6)
-        goto done;
-      priv->have_ipv6 =
-          alloc_ports_one_family (stream, G_SOCKET_FAMILY_IPV6, 
priv->udpsrc_v6,
-          &priv->server_port_v6, ct, &priv->server_addr_v6,
-          use_client_settings);
+      /* Unicast IPV6 */
+      result =
+          alloc_ports_one_family (stream, G_SOCKET_FAMILY_IPV6,
+          transport_udpsrcs->udpsrc, &priv->server_port_v6, ct,
+          &priv->server_addr_v6, use_client_settings);
     }
+
+    /* If we didn't create any unicast udpsrcs, free the transport_udpsrcs 
struct. 
+     * Otherwise, add it to the hash table */
+    if (transport_udpsrcs->udpsrc[0] == NULL
+        && transport_udpsrcs->udpsrc[1] == NULL)
+      g_slice_free (GstRTSPStreamUDPSrcs, transport_udpsrcs);
+    else
+      g_hash_table_insert (priv->udpsrcs, ct, transport_udpsrcs);
   }
 
 done:
-  result = priv->have_ipv4 || priv->have_ipv4_mcast || priv->have_ipv6 ||
-      priv->have_ipv6_mcast;
-
   g_mutex_unlock (&priv->lock);
 
   return result;
@@ -2476,39 +2501,6 @@
       gst_pad_link (pad, priv->recv_sink[i]);
       gst_object_unref (pad);
 
-      if (priv->udpsrc_v4[i]) {
-        if (priv->srcpad) {
-          /* we set and keep these to playing so that they don't cause 
NO_PREROLL return
-           * values. This is only relevant for PLAY pipelines */
-          gst_element_set_state (priv->udpsrc_v4[i], GST_STATE_PLAYING);
-          gst_element_set_locked_state (priv->udpsrc_v4[i], TRUE);
-        }
-        /* add udpsrc */
-        gst_bin_add (bin, priv->udpsrc_v4[i]);
-
-        /* and link to the funnel v4 */
-        selpad = gst_element_get_request_pad (priv->funnel[i], "sink_%u");
-        pad = gst_element_get_static_pad (priv->udpsrc_v4[i], "src");
-        gst_pad_link (pad, selpad);
-        gst_object_unref (pad);
-        gst_object_unref (selpad);
-      }
-
-      if (priv->udpsrc_v6[i]) {
-        if (priv->srcpad) {
-          gst_element_set_state (priv->udpsrc_v6[i], GST_STATE_PLAYING);
-          gst_element_set_locked_state (priv->udpsrc_v6[i], TRUE);
-        }
-        gst_bin_add (bin, priv->udpsrc_v6[i]);
-
-        /* and link to the funnel v6 */
-        selpad = gst_element_get_request_pad (priv->funnel[i], "sink_%u");
-        pad = gst_element_get_static_pad (priv->udpsrc_v6[i], "src");
-        gst_pad_link (pad, selpad);
-        gst_object_unref (pad);
-        gst_object_unref (selpad);
-      }
-
       if (is_tcp) {
         /* make and add appsrc */
         priv->appsrc[i] = gst_element_factory_make ("appsrc", NULL);
@@ -2697,51 +2689,50 @@
       gst_element_set_state (priv->udpsink[0], GST_STATE_NULL);
     if (priv->udpsink[1])
       gst_element_set_state (priv->udpsink[1], GST_STATE_NULL);
-    if (priv->udpsrc_v4[0]) {
-      gst_element_set_state (priv->udpsrc_v4[0], GST_STATE_NULL);
-      gst_object_unref (priv->udpsrc_v4[0]);
-      priv->udpsrc_v4[0] = NULL;
-    }
-    if (priv->udpsrc_v4[1]) {
-      gst_element_set_state (priv->udpsrc_v4[1], GST_STATE_NULL);
-      gst_object_unref (priv->udpsrc_v4[1]);
-      priv->udpsrc_v4[1] = NULL;
-    }
-    if (priv->udpsrc_mcast_v4[0]) {
-      gst_element_set_state (priv->udpsrc_mcast_v4[0], GST_STATE_NULL);
-      gst_object_unref (priv->udpsrc_mcast_v4[0]);
-      priv->udpsrc_mcast_v4[0] = NULL;
-    }
-    if (priv->udpsrc_mcast_v4[1]) {
-      gst_element_set_state (priv->udpsrc_mcast_v4[1], GST_STATE_NULL);
-      gst_object_unref (priv->udpsrc_mcast_v4[1]);
-      priv->udpsrc_mcast_v4[1] = NULL;
-    }
-    if (priv->udpsrc_v6[0]) {
-      gst_element_set_state (priv->udpsrc_v6[0], GST_STATE_NULL);
-      gst_object_unref (priv->udpsrc_v6[0]);
-      priv->udpsrc_v6[0] = NULL;
-    }
-    if (priv->udpsrc_v6[1]) {
-      gst_element_set_state (priv->udpsrc_v6[1], GST_STATE_NULL);
-      gst_object_unref (priv->udpsrc_v6[1]);
-      priv->udpsrc_v6[1] = NULL;
-    }
-    if (priv->udpsrc_mcast_v6[0]) {
-      gst_element_set_state (priv->udpsrc_mcast_v6[0], GST_STATE_NULL);
-      gst_object_unref (priv->udpsrc_mcast_v6[0]);
-      priv->udpsrc_mcast_v6[0] = NULL;
-    }
-    if (priv->udpsrc_mcast_v6[1]) {
-      gst_element_set_state (priv->udpsrc_mcast_v6[1], GST_STATE_NULL);
-      gst_object_unref (priv->udpsrc_mcast_v6[1]);
-      priv->udpsrc_mcast_v6[1] = NULL;
-    }
+
     g_mutex_unlock (&priv->lock);
     return FALSE;
   }
 }
 
+/* Must be called with priv->lock. */
+static void
+remove_all_unicast_udpsrcs (GstRTSPStream * stream, GstBin * bin)
+{
+  GstRTSPStreamPrivate *priv;
+  GHashTableIter iter;
+  gpointer iter_key, iter_value;
+
+  priv = stream->priv;
+
+  /* Remove all of the unicast udpsrcs */
+  g_hash_table_iter_init (&iter, priv->udpsrcs);
+  while (g_hash_table_iter_next (&iter, &iter_key, &iter_value)) {
+    GstRTSPStreamUDPSrcs *transport_udpsrcs =
+        (GstRTSPStreamUDPSrcs *) iter_value;
+
+    for (int i = 0; i < 2; i++) {
+      if (transport_udpsrcs->udpsrc[i]) {
+        if (priv->sinkpad || i == 1) {
+          /* Set udpsrc to NULL now before removing */
+          gst_element_set_locked_state (transport_udpsrcs->udpsrc[i], FALSE);
+          gst_element_set_state (transport_udpsrcs->udpsrc[i], GST_STATE_NULL);
+
+          /* removing them should also nicely release the request
+           * pads when they finalize */
+          gst_bin_remove (bin, transport_udpsrcs->udpsrc[i]);
+        } else {
+          /* we need to set the state to NULL before unref */
+          gst_element_set_state (transport_udpsrcs->udpsrc[i], GST_STATE_NULL);
+          gst_object_unref (transport_udpsrcs->udpsrc[i]);
+        }
+      }
+    }
+  }
+
+  g_hash_table_remove_all (priv->udpsrcs);
+}
+
 /**
  * gst_rtsp_stream_leave_bin:
  * @stream: a #GstRTSPStream
@@ -2797,6 +2788,7 @@
   is_udp = ((priv->protocols & GST_RTSP_LOWER_TRANS_UDP) ||
       (priv->protocols & GST_RTSP_LOWER_TRANS_UDP_MCAST));
 
+  remove_all_unicast_udpsrcs (stream, bin);
 
   for (i = 0; i < 2; i++) {
     if (priv->udpsink[i])
@@ -2814,21 +2806,6 @@
     if (priv->appsrc[i])
       gst_element_set_state (priv->appsrc[i], GST_STATE_NULL);
 
-    if (priv->udpsrc_v4[i]) {
-      if (priv->sinkpad || i == 1) {
-        /* and set udpsrc to NULL now before removing */
-        gst_element_set_locked_state (priv->udpsrc_v4[i], FALSE);
-        gst_element_set_state (priv->udpsrc_v4[i], GST_STATE_NULL);
-        /* removing them should also nicely release the request
-         * pads when they finalize */
-        gst_bin_remove (bin, priv->udpsrc_v4[i]);
-      } else {
-        /* we need to set the state to NULL before unref */
-        gst_element_set_state (priv->udpsrc_v4[i], GST_STATE_NULL);
-        gst_object_unref (priv->udpsrc_v4[i]);
-      }
-    }
-
     if (priv->udpsrc_mcast_v4[i]) {
       if (priv->sinkpad || i == 1) {
         /* and set udpsrc to NULL now before removing */
@@ -2843,16 +2820,6 @@
       }
     }
 
-    if (priv->udpsrc_v6[i]) {
-      if (priv->sinkpad || i == 1) {
-        gst_element_set_locked_state (priv->udpsrc_v6[i], FALSE);
-        gst_element_set_state (priv->udpsrc_v6[i], GST_STATE_NULL);
-        gst_bin_remove (bin, priv->udpsrc_v6[i]);
-      } else {
-        gst_element_set_state (priv->udpsrc_v6[i], GST_STATE_NULL);
-        gst_object_unref (priv->udpsrc_v6[i]);
-      }
-    }
     if (priv->udpsrc_mcast_v6[i]) {
       if (priv->sinkpad || i == 1) {
         gst_element_set_locked_state (priv->udpsrc_mcast_v6[i], FALSE);
@@ -2893,8 +2860,6 @@
       priv->recv_sink[i] = NULL;
     }
 
-    priv->udpsrc_v4[i] = NULL;
-    priv->udpsrc_v6[i] = NULL;
     priv->udpsrc_mcast_v4[i] = NULL;
     priv->udpsrc_mcast_v6[i] = NULL;
     priv->udpsink[i] = NULL;
@@ -3240,6 +3205,68 @@
   return ret;
 }
 
+/* Properly dispose udpsrcs that were created for a given transport. */
+/* Must be called with priv->lock. */
+static void
+remove_transport_udpsrcs (GstRTSPStreamPrivate * priv,
+    const GstRTSPTransport * tr)
+{
+  /* Remove the udpsrcs associated with this transport. */
+  GstRTSPStreamUDPSrcs *transport_udpsrcs =
+      g_hash_table_lookup (priv->udpsrcs, tr);
+  if (transport_udpsrcs != NULL) {
+    for (int i = 0; i < 2; i++) {
+      if (transport_udpsrcs->udpsrc[i]) {
+        if (priv->sinkpad || i == 1) {
+          GstBin *bin;
+          GstPad *udpsrc_srcpad, *funnel_sinkpad;
+
+          /* We know these udpsrcs are all linked to funnels. Explicitely 
+           * get the funnel src pads so we can properly release them. */
+          udpsrc_srcpad =
+              gst_element_get_static_pad (transport_udpsrcs->udpsrc[i], "src");
+          funnel_sinkpad = gst_pad_get_peer (udpsrc_srcpad);
+
+          if (funnel_sinkpad != NULL) {
+            /* Unlink pads and release funnel's request pad. */
+            gst_pad_unlink (udpsrc_srcpad, funnel_sinkpad);
+            gst_element_release_request_pad (priv->funnel[i], funnel_sinkpad);
+            gst_object_unref (funnel_sinkpad);
+          }
+          gst_object_unref (udpsrc_srcpad);
+
+          /* Set udpsrc to NULL now before removing */
+          gst_element_set_locked_state (transport_udpsrcs->udpsrc[i], FALSE);
+          gst_element_set_state (transport_udpsrcs->udpsrc[i], GST_STATE_NULL);
+
+          /* This udpsrc is expected to be owned by a bin. Get the bin and 
+           * remove our element. */
+          bin = GST_BIN (gst_element_get_parent 
(transport_udpsrcs->udpsrc[i]));
+          if (bin != NULL) {
+            gst_bin_remove (bin, transport_udpsrcs->udpsrc[i]);
+            gst_object_unref (bin);
+          } else {
+            GST_ERROR ("Expected this udpsrc element to be part of a bin.");
+            gst_object_unref (transport_udpsrcs->udpsrc[i]);
+          }
+
+        } else {
+          /* we need to set the state to NULL before unref */
+          gst_element_set_state (transport_udpsrcs->udpsrc[i], GST_STATE_NULL);
+          gst_object_unref (transport_udpsrcs->udpsrc[i]);
+        }
+      }
+    }
+
+    /* The udpsrcs are now properly cleaned up. Remove them from the table */
+    g_hash_table_remove (priv->udpsrcs, tr);
+
+  } else {
+    /* This can happen if we're dealing with a multicast transport. */
+    GST_INFO ("Could not find udpsrcs associated with this transport.");
+  }
+}
+
 /* must be called with lock */
 static gboolean
 update_transport (GstRTSPStream * stream, GstRTSPStreamTransport * trans,
@@ -3288,6 +3315,8 @@
         g_signal_emit_by_name (priv->udpsink[0], "remove", dest, min, NULL);
         g_signal_emit_by_name (priv->udpsink[1], "remove", dest, max, NULL);
         priv->transports = g_list_remove (priv->transports, trans);
+
+        remove_transport_udpsrcs (priv, tr);
       }
       priv->transports_cookie++;
       break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-rtsp-server-1.8.1/gst-rtsp-server.doap 
new/gst-rtsp-server-1.8.2/gst-rtsp-server.doap
--- old/gst-rtsp-server-1.8.1/gst-rtsp-server.doap      2016-04-20 
14:16:43.000000000 +0200
+++ new/gst-rtsp-server-1.8.2/gst-rtsp-server.doap      2016-06-09 
09:12:50.000000000 +0200
@@ -32,6 +32,16 @@
 
  <release>
   <Version>
+   <revision>1.8.2</revision>
+   <branch>1.8</branch>
+   <name></name>
+   <created>2016-06-09</created>
+   <file-release 
rdf:resource="http://gstreamer.freedesktop.org/src/gst-rtsp-server/gst-rtsp-server-1.8.2.tar.xz";
 />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
    <revision>1.8.1</revision>
    <branch>1.8</branch>
    <name></name>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-rtsp-server-1.8.1/gst-rtsp.spec 
new/gst-rtsp-server-1.8.2/gst-rtsp.spec
--- old/gst-rtsp-server-1.8.1/gst-rtsp.spec     2016-04-20 14:16:59.000000000 
+0200
+++ new/gst-rtsp-server-1.8.2/gst-rtsp.spec     2016-06-09 09:23:36.000000000 
+0200
@@ -1,7 +1,7 @@
 %define         gst_majorminor 1.0
 
 Name:           gstreamer-rtsp-server
-Version:        1.8.1
+Version:        1.8.2
 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.8.1/tests/check/gst/rtspserver.c 
new/gst-rtsp-server-1.8.2/tests/check/gst/rtspserver.c
--- old/gst-rtsp-server-1.8.1/tests/check/gst/rtspserver.c      2016-03-24 
12:36:50.000000000 +0100
+++ new/gst-rtsp-server-1.8.2/tests/check/gst/rtspserver.c      2016-05-04 
09:21:55.000000000 +0200
@@ -149,7 +149,7 @@
 
 /* start the tested rtsp server */
 static void
-start_server (void)
+start_server (gboolean set_shared_factory)
 {
   GstRTSPMountPoints *mounts;
   gchar *service;
@@ -172,6 +172,7 @@
   gst_rtsp_address_pool_add_range (pool, GST_RTSP_ADDRESS_POOL_ANY_IPV4,
       GST_RTSP_ADDRESS_POOL_ANY_IPV4, 6000, 6010, 0);
   gst_rtsp_media_factory_set_address_pool (factory, pool);
+  gst_rtsp_media_factory_set_shared (factory, set_shared_factory);
   gst_object_unref (pool);
 
   /* set port to any */
@@ -571,7 +572,7 @@
 {
   GstRTSPConnection *conn;
 
-  start_server ();
+  start_server (FALSE);
 
   /* connect to server */
   conn = connect_to_server (test_port, TEST_MOUNT_POINT);
@@ -597,7 +598,7 @@
   const gchar *control_video;
   const gchar *control_audio;
 
-  start_server ();
+  start_server (FALSE);
 
   conn = connect_to_server (test_port, TEST_MOUNT_POINT);
 
@@ -668,7 +669,7 @@
 {
   GstRTSPConnection *conn;
 
-  start_server ();
+  start_server (FALSE);
 
   /* send DESCRIBE request for a non-existing mount point
    * and check that we get a 404 Not Found */
@@ -697,7 +698,7 @@
   GstRTSPTransport *video_transport = NULL;
   GstRTSPTransport *audio_transport = NULL;
 
-  start_server ();
+  start_server (FALSE);
 
   conn = connect_to_server (test_port, TEST_MOUNT_POINT);
 
@@ -782,7 +783,7 @@
   gchar *session1 = NULL;
   gchar *session2 = NULL;
 
-  start_server ();
+  start_server (FALSE);
 
   conn = connect_to_server (test_port, TEST_MOUNT_POINT);
 
@@ -854,7 +855,7 @@
   gchar *unsupported = NULL;
   GstRTSPTransport *video_transport = NULL;
 
-  start_server ();
+  start_server (FALSE);
 
   conn = connect_to_server (test_port, TEST_MOUNT_POINT);
 
@@ -916,7 +917,7 @@
   GstRTSPConnection *conn;
   GstRTSPRange client_ports;
 
-  start_server ();
+  start_server (FALSE);
 
   conn = connect_to_server (test_port, TEST_MOUNT_POINT);
 
@@ -1009,7 +1010,8 @@
 }
 
 static void
-do_test_play_full (const gchar * range, GstRTSPLowerTrans lower_transport)
+do_test_play_full (const gchar * range, GstRTSPLowerTrans lower_transport,
+    GMutex * lock)
 {
   GstRTSPConnection *conn;
   GstSDPMessage *sdp_message = NULL;
@@ -1051,8 +1053,20 @@
     fail_unless_equals_string (range, range_out);
   g_free (range_out);
 
-  receive_rtp (rtp_socket, NULL);
-  receive_rtcp (rtcp_socket, NULL, 0);
+  for (;;) {
+    receive_rtp (rtp_socket, NULL);
+    receive_rtcp (rtcp_socket, NULL, 0);
+
+    if (lock != NULL) {
+      if (g_mutex_trylock (lock) == TRUE) {
+        g_mutex_unlock (lock);
+        break;
+      }
+    } else {
+      break;
+    }
+
+  }
 
   /* send TEARDOWN request and check that we get 200 OK */
   fail_unless (do_simple_request (conn, GST_RTSP_TEARDOWN,
@@ -1076,12 +1090,12 @@
 static void
 do_test_play (const gchar * range)
 {
-  do_test_play_full (range, GST_RTSP_LOWER_TRANS_UDP);
+  do_test_play_full (range, GST_RTSP_LOWER_TRANS_UDP, NULL);
 }
 
 GST_START_TEST (test_play)
 {
-  start_server ();
+  start_server (FALSE);
 
   do_test_play (NULL);
 
@@ -1095,7 +1109,7 @@
 {
   GstRTSPConnection *conn;
 
-  start_server ();
+  start_server (FALSE);
 
   conn = connect_to_server (test_port, TEST_MOUNT_POINT);
 
@@ -1155,7 +1169,7 @@
   gst_rtsp_thread_pool_set_max_threads (pool, 2);
   g_object_unref (pool);
 
-  start_server ();
+  start_server (FALSE);
 
   do_test_play (NULL);
 
@@ -1215,7 +1229,7 @@
   gst_rtsp_mount_points_add_factory (mounts, TEST_MOUNT_POINT "2", factory);
   g_object_unref (mounts);
 
-  start_server ();
+  start_server (FALSE);
 
   conn = connect_to_server (test_port, TEST_MOUNT_POINT "2");
   iterate ();
@@ -1294,7 +1308,7 @@
   g_signal_connect (server, "client-connected",
       G_CALLBACK (session_connected_new_session_cb), new_session_timeout_one);
 
-  start_server ();
+  start_server (FALSE);
 
 
   conn = connect_to_server (test_port, TEST_MOUNT_POINT);
@@ -1367,7 +1381,7 @@
   g_signal_connect (server, "client-connected",
       G_CALLBACK (session_connected_new_session_cb), new_session_timeout_one);
 
-  start_server ();
+  start_server (FALSE);
 
 
   conn = connect_to_server (test_port, TEST_MOUNT_POINT);
@@ -1443,7 +1457,7 @@
   g_signal_connect (server, "client-connected",
       G_CALLBACK (session_connected_new_session_cb), new_session_timeout_one);
 
-  start_server ();
+  start_server (FALSE);
 
   conn = connect_to_server (test_port, TEST_MOUNT_POINT);
 
@@ -1515,7 +1529,8 @@
   factory = gst_rtsp_media_factory_new ();
   /* we have to suspend media after SDP in order to make sure that
    * we can reconfigure UDP sink with new UDP ports */
-  gst_rtsp_media_factory_set_suspend_mode (factory, 
GST_RTSP_SUSPEND_MODE_RESET);
+  gst_rtsp_media_factory_set_suspend_mode (factory,
+      GST_RTSP_SUSPEND_MODE_RESET);
   pool = gst_rtsp_address_pool_new ();
   gst_rtsp_address_pool_add_range (pool, GST_RTSP_ADDRESS_POOL_ANY_IPV4,
       GST_RTSP_ADDRESS_POOL_ANY_IPV4, 7770, 7780, 0);
@@ -1603,7 +1618,7 @@
 
 GST_START_TEST (test_play_smpte_range)
 {
-  start_server ();
+  start_server (FALSE);
 
   do_test_play ("npt=5-");
   do_test_play ("smpte=0:00:00-");
@@ -1617,6 +1632,65 @@
 
 GST_END_TEST;
 
+static gpointer
+thread_func (gpointer data)
+{
+  do_test_play_full (NULL, GST_RTSP_LOWER_TRANS_UDP, (GMutex *) data);
+  return NULL;
+}
+
+/* Test adding and removing clients to a 'Shared' media. */
+GST_START_TEST (test_shared)
+{
+  GMutex lock1, lock2, lock3, lock4;
+  GThread *thread1, *thread2, *thread3, *thread4;
+
+  /* Locks for each thread. Each thread will keep reading data as long as the
+   * thread is locked. */
+  g_mutex_init (&lock1);
+  g_mutex_init (&lock2);
+  g_mutex_init (&lock3);
+  g_mutex_init (&lock4);
+
+  start_server (TRUE);
+
+  /* Start the first receiver thread. */
+  g_mutex_lock (&lock1);
+  thread1 = g_thread_new ("thread1", thread_func, &lock1);
+
+  /* Connect and disconnect another client. */
+  g_mutex_lock (&lock2);
+  thread2 = g_thread_new ("thread2", thread_func, &lock2);
+  g_mutex_unlock (&lock2);
+  g_mutex_clear (&lock2);
+  g_thread_join (thread2);
+
+  /* Do it again. */
+  g_mutex_lock (&lock3);
+  thread3 = g_thread_new ("thread3", thread_func, &lock3);
+  g_mutex_unlock (&lock3);
+  g_mutex_clear (&lock3);
+  g_thread_join (thread3);
+
+  /* Disconnect the last client. This will clean up the media. */
+  g_mutex_unlock (&lock1);
+  g_mutex_clear (&lock1);
+  g_thread_join (thread1);
+
+  /* Connect and disconnect another client. This will create and clean up the 
+   * media. */
+  g_mutex_lock (&lock4);
+  thread4 = g_thread_new ("thread4", thread_func, &lock4);
+  g_mutex_unlock (&lock4);
+  g_mutex_clear (&lock4);
+  g_thread_join (thread4);
+
+  stop_server ();
+  iterate ();
+}
+
+GST_END_TEST;
+
 GST_START_TEST (test_announce_without_sdp)
 {
   GstRTSPConnection *conn;
@@ -1749,7 +1823,8 @@
   gint i;
 
   mfactory =
-      start_record_server ("( rtppcmadepay name=depay0 ! appsink name=sink 
async=false )");
+      start_record_server
+      ("( rtppcmadepay name=depay0 ! appsink name=sink async=false )");
 
   g_signal_connect (mfactory, "media-constructed",
       G_CALLBACK (media_constructed_cb), &server_sink);
@@ -1926,6 +2001,7 @@
   tcase_add_test (tc, test_play_disconnect);
   tcase_add_test (tc, test_play_specific_server_port);
   tcase_add_test (tc, test_play_smpte_range);
+  tcase_add_test (tc, test_shared);
   tcase_add_test (tc, test_announce_without_sdp);
   tcase_add_test (tc, test_record_tcp);
   return s;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-rtsp-server-1.8.1/tests/check/gst/stream.c 
new/gst-rtsp-server-1.8.2/tests/check/gst/stream.c
--- old/gst-rtsp-server-1.8.1/tests/check/gst/stream.c  2016-03-24 
12:36:50.000000000 +0100
+++ new/gst-rtsp-server-1.8.2/tests/check/gst/stream.c  2016-05-04 
09:21:55.000000000 +0200
@@ -52,18 +52,20 @@
 
   /* configure address pool for IPv4 and IPv6 unicast addresses */
   pool = gst_rtsp_address_pool_new ();
-  fail_unless (gst_rtsp_address_pool_add_range (pool, 
GST_RTSP_ADDRESS_POOL_ANY_IPV4,
-        GST_RTSP_ADDRESS_POOL_ANY_IPV4, 50000, 60000, 0));
-  fail_unless (gst_rtsp_address_pool_add_range (pool, 
GST_RTSP_ADDRESS_POOL_ANY_IPV6,
-        GST_RTSP_ADDRESS_POOL_ANY_IPV6, 50000, 60000, 0));
+  fail_unless (gst_rtsp_address_pool_add_range (pool,
+          GST_RTSP_ADDRESS_POOL_ANY_IPV4, GST_RTSP_ADDRESS_POOL_ANY_IPV4, 
50000,
+          60000, 0));
+  fail_unless (gst_rtsp_address_pool_add_range (pool,
+          GST_RTSP_ADDRESS_POOL_ANY_IPV6, GST_RTSP_ADDRESS_POOL_ANY_IPV6, 
50000,
+          60000, 0));
   gst_rtsp_stream_set_address_pool (stream, pool);
 
   fail_unless (gst_rtsp_stream_join_bin (stream, bin, rtpbin, GST_STATE_NULL));
 
   gst_rtsp_transport_new (&tr);
   tr->lower_transport = GST_RTSP_LOWER_TRANS_UDP;
-  fail_unless (gst_rtsp_stream_allocate_udp_sockets (stream, 
G_SOCKET_FAMILY_IPV4,
-        tr, FALSE));
+  fail_unless (gst_rtsp_stream_allocate_udp_sockets (stream,
+          G_SOCKET_FAMILY_IPV4, tr, FALSE));
 
   socket = gst_rtsp_stream_get_rtp_socket (stream, G_SOCKET_FAMILY_IPV4);
   have_ipv4 = (socket != NULL);
@@ -138,7 +140,7 @@
 
   pool = gst_rtsp_address_pool_new ();
   fail_unless (gst_rtsp_address_pool_add_range (pool, "192.168.1.1",
-        "192.168.1.1", 6000, 6001, 0));
+          "192.168.1.1", 6000, 6001, 0));
   gst_rtsp_stream_set_address_pool (stream, pool);
 
   fail_unless (gst_rtsp_stream_join_bin (stream, bin, rtpbin, GST_STATE_NULL));
@@ -146,7 +148,7 @@
   gst_rtsp_transport_new (&tr);
   tr->lower_transport = GST_RTSP_LOWER_TRANS_UDP;
   fail_if (gst_rtsp_stream_allocate_udp_sockets (stream, G_SOCKET_FAMILY_IPV4,
-        tr, FALSE));
+          tr, FALSE));
 
   gst_rtsp_transport_free (tr);
   g_object_unref (pool);
@@ -258,8 +260,8 @@
   gst_rtsp_transport_new (&tr);
   /* unicast udp */
   tr->lower_transport = GST_RTSP_LOWER_TRANS_UDP;
-  fail_unless (gst_rtsp_stream_allocate_udp_sockets (stream, 
G_SOCKET_FAMILY_IPV4,
-        tr, FALSE));
+  fail_unless (gst_rtsp_stream_allocate_udp_sockets (stream,
+          G_SOCKET_FAMILY_IPV4, tr, FALSE));
 
   gst_rtsp_transport_free (tr);
   g_object_unref (pool);
@@ -309,8 +311,8 @@
   /* allocate udp multicast ports for IPv4 */
   gst_rtsp_transport_new (&tr);
   tr->lower_transport = GST_RTSP_LOWER_TRANS_UDP_MCAST;
-  fail_unless (gst_rtsp_stream_allocate_udp_sockets (stream, 
G_SOCKET_FAMILY_IPV4,
-        tr, FALSE));
+  fail_unless (gst_rtsp_stream_allocate_udp_sockets (stream,
+          G_SOCKET_FAMILY_IPV4, tr, FALSE));
 
   /* check the multicast address and ports for IPv4 */
   addr = gst_rtsp_stream_get_multicast_address (stream, G_SOCKET_FAMILY_IPV4);
@@ -320,9 +322,9 @@
   fail_unless_equals_int (addr->n_ports, 2);
   gst_rtsp_address_free (addr);
 
-  /* allocate upd multicast ports for IPv6 */
-  fail_unless (gst_rtsp_stream_allocate_udp_sockets (stream, 
G_SOCKET_FAMILY_IPV6,
-        tr, FALSE));
+  /* allocate udp multicast ports for IPv6 */
+  fail_unless (gst_rtsp_stream_allocate_udp_sockets (stream,
+          G_SOCKET_FAMILY_IPV6, tr, FALSE));
 
   /* check the multicast address and ports for IPv6 */
   addr = gst_rtsp_stream_get_multicast_address (stream, G_SOCKET_FAMILY_IPV6);
@@ -388,8 +390,8 @@
   tr->port.min = 6002;
   tr->port.max = 6003;
   tr->lower_transport = GST_RTSP_LOWER_TRANS_UDP_MCAST;
-  fail_unless (gst_rtsp_stream_allocate_udp_sockets (stream, 
G_SOCKET_FAMILY_IPV4,
-        tr, FALSE));
+  fail_unless (gst_rtsp_stream_allocate_udp_sockets (stream,
+          G_SOCKET_FAMILY_IPV4, tr, FALSE));
 
   /* verify that the multicast address and ports correspond to the requested 
client
    * transport information for IPv4 */
@@ -405,8 +407,8 @@
   tr->destination = g_strdup ("FF11:DB8::1");
   tr->port.min = 6006;
   tr->port.max = 6007;
-  fail_unless (gst_rtsp_stream_allocate_udp_sockets (stream, 
G_SOCKET_FAMILY_IPV6,
-        tr, FALSE));
+  fail_unless (gst_rtsp_stream_allocate_udp_sockets (stream,
+          G_SOCKET_FAMILY_IPV6, tr, FALSE));
 
   /* verify that the multicast address and ports correspond to the requested 
client
    * transport information for IPv6 */


Reply via email to