[FFmpeg-cvslog] r22398 - trunk/libavformat/rtsp.c

mstorsjo subversion
Tue Mar 9 15:59:40 CET 2010


Author: mstorsjo
Date: Tue Mar  9 15:59:40 2010
New Revision: 22398

Log:
RTSP: Resolve and use the actual IP address of the peer we're connected to,
instead of using the original host name, since the RTP (and UDP) protocols
may choose another IP address if the host name resolves into several different
addresses.

Modified:
   trunk/libavformat/rtsp.c

Modified: trunk/libavformat/rtsp.c
==============================================================================
--- trunk/libavformat/rtsp.c	Tue Mar  9 15:58:29 2010	(r22397)
+++ trunk/libavformat/rtsp.c	Tue Mar  9 15:59:40 2010	(r22398)
@@ -1381,10 +1381,12 @@ int ff_rtsp_connect(AVFormatContext *s)
     char host[1024], path[1024], tcpname[1024], cmd[2048], auth[128];
     char *option_list, *option, *filename;
     URLContext *rtsp_hd;
-    int port, err;
+    int port, err, tcp_fd;
     RTSPMessageHeader reply1, *reply = &reply1;
     int lower_transport_mask = 0;
     char real_challenge[64];
+    struct sockaddr_storage peer;
+    socklen_t peer_len = sizeof(peer);
 
     if (!ff_network_init())
         return AVERROR(EIO);
@@ -1455,6 +1457,12 @@ redirect:
     rt->rtsp_hd = rtsp_hd;
     rt->seq = 0;
 
+    tcp_fd = url_get_file_handle(rtsp_hd);
+    if (!getpeername(tcp_fd, (struct sockaddr*) &peer, &peer_len)) {
+        getnameinfo((struct sockaddr*) &peer, peer_len, host, sizeof(host),
+                    NULL, 0, NI_NUMERICHOST);
+    }
+
     /* request options supported by the server; this also detects server
      * type */
     av_strlcpy(rt->control_uri, s->filename,



More information about the ffmpeg-cvslog mailing list