Mercurial > libavformat.hg
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);