changeset 6145:33fe8833a439 libavformat

RTSP: Don't store the connection handles in local variables This removes some useless copying of handles, and simplifies error handling. Patch by Josh Allmann, joshua dot allmann at gmail
author mstorsjo
date Sat, 19 Jun 2010 21:36:13 +0000
parents f2c92e715300
children 9f9a4be98cfb
files rtsp.c
diffstat 1 files changed, 9 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/rtsp.c	Fri Jun 18 23:17:20 2010 +0000
+++ b/rtsp.c	Sat Jun 19 21:36:13 2010 +0000
@@ -1490,7 +1490,6 @@
     RTSPState *rt = s->priv_data;
     char host[1024], path[1024], tcpname[1024], cmd[2048], auth[128];
     char *option_list, *option, *filename;
-    URLContext *rtsp_hd, *rtsp_hd_out;
     int port, err, tcp_fd;
     RTSPMessageHeader reply1 = {}, *reply = &reply1;
     int lower_transport_mask = 0;
@@ -1578,7 +1577,7 @@
                  av_get_random_seed(), av_get_random_seed());
 
         /* GET requests */
-        if (url_open(&rtsp_hd, httpname, URL_RDONLY) < 0) {
+        if (url_open(&rt->rtsp_hd, httpname, URL_RDONLY) < 0) {
             err = AVERROR(EIO);
             goto fail;
         }
@@ -1590,18 +1589,16 @@
                  "Pragma: no-cache\r\n"
                  "Cache-Control: no-cache\r\n",
                  sessioncookie);
-        ff_http_set_headers(rtsp_hd, headers);
+        ff_http_set_headers(rt->rtsp_hd, headers);
 
         /* complete the connection */
-        if (url_read(rtsp_hd, NULL, 0)) {
-            url_close(rtsp_hd);
+        if (url_read(rt->rtsp_hd, NULL, 0)) {
             err = AVERROR(EIO);
             goto fail;
         }
 
         /* POST requests */
-        if (url_open(&rtsp_hd_out, httpname, URL_WRONLY) < 0 ) {
-            url_close(rtsp_hd);
+        if (url_open(&rt->rtsp_hd_out, httpname, URL_WRONLY) < 0 ) {
             err = AVERROR(EIO);
             goto fail;
         }
@@ -1615,23 +1612,21 @@
                  "Content-Length: 32767\r\n"
                  "Expires: Sun, 9 Jan 1972 00:00:00 GMT\r\n",
                  sessioncookie);
-        ff_http_set_headers(rtsp_hd_out, headers);
-        ff_http_set_chunked_transfer_encoding(rtsp_hd_out, 0);
+        ff_http_set_headers(rt->rtsp_hd_out, headers);
+        ff_http_set_chunked_transfer_encoding(rt->rtsp_hd_out, 0);
 
     } else {
         /* open the tcp connection */
         ff_url_join(tcpname, sizeof(tcpname), "tcp", NULL, host, port, NULL);
-        if (url_open(&rtsp_hd, tcpname, URL_RDWR) < 0) {
+        if (url_open(&rt->rtsp_hd, tcpname, URL_RDWR) < 0) {
             err = AVERROR(EIO);
             goto fail;
         }
-        rtsp_hd_out = rtsp_hd;
+        rt->rtsp_hd_out = rt->rtsp_hd;
     }
-    rt->rtsp_hd = rtsp_hd;
-    rt->rtsp_hd_out = rtsp_hd_out;
     rt->seq = 0;
 
-    tcp_fd = url_get_file_handle(rtsp_hd);
+    tcp_fd = url_get_file_handle(rt->rtsp_hd);
     if (!getpeername(tcp_fd, (struct sockaddr*) &peer, &peer_len)) {
         getnameinfo((struct sockaddr*) &peer, peer_len, host, sizeof(host),
                     NULL, 0, NI_NUMERICHOST);