From c6eeb9b7b6bbf5d0f507cad522ed5a4f929de14f Mon Sep 17 00:00:00 2001
From: Luca Barbato <lu_zero@gentoo.org>
Date: Mon, 14 May 2012 17:24:27 -0700
Subject: [PATCH] rtmp: fix url parsing

The application component can have a subcomponent to specify the
application instance even if it doesn't have a ":" in the playpath.
---
 doc/protocols.texi      | 2 +-
 libavformat/rtmpproto.c | 3 ++-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/doc/protocols.texi b/doc/protocols.texi
index d6e12f73e31..172184e5011 100644
--- a/doc/protocols.texi
+++ b/doc/protocols.texi
@@ -164,7 +164,7 @@ content across a TCP/IP network.
 
 The required syntax is:
 @example
-rtmp://@var{server}[:@var{port}][/@var{app}][/@var{playpath}]
+rtmp://@var{server}[:@var{port}][/@var{app}][/@var{instance}][/@var{playpath}]
 @end example
 
 The accepted parameters are:
diff --git a/libavformat/rtmpproto.c b/libavformat/rtmpproto.c
index 9af45842261..807e899f340 100644
--- a/libavformat/rtmpproto.c
+++ b/libavformat/rtmpproto.c
@@ -1037,9 +1037,10 @@ static int rtmp_open(URLContext *s, const char *uri, int flags)
             fname = next;
             rt->app[0] = '\0';
         } else {
+            // make sure we do not mismatch a playpath for an application instance
             char *c = strchr(p + 1, ':');
             fname = strchr(p + 1, '/');
-            if (!fname || c < fname) {
+            if (!fname || (c && c < fname)) {
                 fname = p + 1;
                 av_strlcpy(rt->app, path + 1, p - path);
             } else {
-- 
GitLab