[FFmpeg-devel] [PATCH] IOS-IPv6-only-network-use-hardcode-IPv4-fix

liu jc jcliu at outlook.com
Tue Aug 23 08:48:57 EEST 2016


 there is a bug when useing getaddrinfo in IOS when use
 hardcode IPv4 address and in IPv6-only networks.It can not
 accept a port number as second parameter as an alternative
 you can pass a service name  or it will cause connect fail.
 In current video CDN dispatching mechanism the hardcode
 IPv4 is widly used for better performance. This problem
 cause many APP use ffmpeg to play this type CDN dispatched
 video were rejected by APP store. This patch fix this by
 adding a port to name map for widly used port number that
 these CDN use to dispatch video.

---
 libavformat/tcp.c |   17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)
 mode change 100644 => 100755 libavformat/tcp.c

diff --git a/libavformat/tcp.c b/libavformat/tcp.c
old mode 100644
new mode 100755
index c105479..0de7710
--- a/libavformat/tcp.c
+++ b/libavformat/tcp.c
@@ -72,7 +72,7 @@ static int tcp_open(URLContext *h, const char *uri, int flags)
     char buf[256];
     int ret;
     char hostname[1024],proto[1024],path[1024];
-    char portstr[10];
+    char portstr[64];
     s->open_timeout = 5000000;
 
     av_url_split(proto, sizeof(proto), NULL, 0, hostname, sizeof(hostname),
@@ -105,7 +105,19 @@ static int tcp_open(URLContext *h, const char *uri, int flags)
     }
     hints.ai_family = AF_UNSPEC;
     hints.ai_socktype = SOCK_STREAM;
-    snprintf(portstr, sizeof(portstr), "%d", port);
+    
+	switch (port) {
+        case 80:
+            snprintf(portstr, sizeof(portstr), "%s", "http");
+            break;
+        case 1935:
+            snprintf(portstr, sizeof(portstr), "%s", "macromedia-fcs"); //know as rtmp
+            break;
+        default:
+            snprintf(portstr, sizeof(portstr), "%d", port);
+            break;
+    }
+
     if (s->listen)
         hints.ai_flags |= AI_PASSIVE;
     if (!hostname[0])
@@ -268,3 +280,4 @@ const URLProtocol ff_tcp_protocol = {
     .flags               = URL_PROTOCOL_FLAG_NETWORK,
     .priv_data_class     = &tcp_class,
 };
+
-- 
1.7.9.5



More information about the ffmpeg-devel mailing list