lavf/rtsp.c: Fix stimeout option not applied on http tunnel

stimeout option is already used in tcp transport, since
http is based on tcp, pass the option to http for tunneling
case.

Reviewed-by: Steven Liu <lq@onvideo.cn>
Signed-off-by: Jun Li <junli1026@gmail.com>
This commit is contained in:
Steven Liu 2019-04-15 15:24:56 +08:00
parent f9840cd2b5
commit f502bd5432
1 changed files with 8 additions and 2 deletions

View File

@ -1744,6 +1744,9 @@ redirect:
char httpname[1024]; char httpname[1024];
char sessioncookie[17]; char sessioncookie[17];
char headers[1024]; char headers[1024];
AVDictionary *options = NULL;
av_dict_set_int(&options, "timeout", rt->stimeout, 0);
ff_url_join(httpname, sizeof(httpname), https_tunnel ? "https" : "http", auth, host, port, "%s", path); ff_url_join(httpname, sizeof(httpname), https_tunnel ? "https" : "http", auth, host, port, "%s", path);
snprintf(sessioncookie, sizeof(sessioncookie), "%08x%08x", snprintf(sessioncookie, sizeof(sessioncookie), "%08x%08x",
@ -1774,7 +1777,8 @@ redirect:
} }
/* complete the connection */ /* complete the connection */
if (ffurl_connect(rt->rtsp_hd, NULL)) { if (ffurl_connect(rt->rtsp_hd, &options)) {
av_dict_free(&options);
err = AVERROR(EIO); err = AVERROR(EIO);
goto fail; goto fail;
} }
@ -1818,10 +1822,12 @@ redirect:
ff_http_init_auth_state(rt->rtsp_hd_out, rt->rtsp_hd); ff_http_init_auth_state(rt->rtsp_hd_out, rt->rtsp_hd);
/* complete the connection */ /* complete the connection */
if (ffurl_connect(rt->rtsp_hd_out, NULL)) { if (ffurl_connect(rt->rtsp_hd_out, &options)) {
av_dict_free(&options);
err = AVERROR(EIO); err = AVERROR(EIO);
goto fail; goto fail;
} }
av_dict_free(&options);
} else { } else {
int ret; int ret;
/* open the tcp connection */ /* open the tcp connection */