[FFmpeg-cvslog] tls: Support passing old-style tcp options

Luca Barbato git at videolan.org
Fri Oct 10 23:02:03 CEST 2014


ffmpeg | branch: master | Luca Barbato <lu_zero at gentoo.org> | Thu Oct  9 21:34:54 2014 +0200| [cd9d6399fd00f5aeacaa90cdc0b74c3570024119] | committer: Luca Barbato

tls: Support passing old-style tcp options

Make tcp and tls urls near-interchangeable.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=cd9d6399fd00f5aeacaa90cdc0b74c3570024119
---

 libavformat/tls.c |   13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/libavformat/tls.c b/libavformat/tls.c
index 7c78fda..817aedc 100644
--- a/libavformat/tls.c
+++ b/libavformat/tls.c
@@ -142,6 +142,7 @@ static int tls_open(URLContext *h, const char *uri, int flags)
     TLSContext *c = h->priv_data;
     int ret;
     int port;
+    const char *p;
     char buf[200], host[200], opts[50] = "";
     int numerichost = 0;
     struct addrinfo hints = { 0 }, *ai = NULL;
@@ -154,7 +155,17 @@ static int tls_open(URLContext *h, const char *uri, int flags)
         snprintf(opts, sizeof(opts), "?listen=1");
 
     av_url_split(NULL, 0, NULL, 0, host, sizeof(host), &port, NULL, 0, uri);
-    ff_url_join(buf, sizeof(buf), "tcp", NULL, host, port, "%s", opts);
+
+    p = strchr(uri, '?');
+
+    if (!p) {
+        p = opts;
+    } else {
+        if (av_find_info_tag(opts, sizeof(opts), "listen", p))
+            c->listen = 1;
+    }
+
+    ff_url_join(buf, sizeof(buf), "tcp", NULL, host, port, "%s", p);
 
     hints.ai_flags = AI_NUMERICHOST;
     if (!getaddrinfo(host, NULL, &hints, &ai)) {



More information about the ffmpeg-cvslog mailing list