@ -106,7 +106,6 @@ static int http_open_cnx(URLContext *h)
int port , use_proxy , err , location_changed = 0 , redirects = 0 , attempts = 0 ;
HTTPAuthType cur_auth_type , cur_proxy_auth_type ;
HTTPContext * s = h - > priv_data ;
URLContext * hd = NULL ;
proxy_path = getenv ( " http_proxy " ) ;
use_proxy = ( proxy_path ! = NULL ) & & ! getenv ( " no_proxy " ) & &
@ -147,12 +146,10 @@ static int http_open_cnx(URLContext *h)
ff_url_join ( buf , sizeof ( buf ) , lower_proto , NULL , hostname , port , NULL ) ;
if ( ! s - > hd ) {
err = ffurl_open ( & hd , buf , AVIO_FLAG_READ_WRITE ,
err = ffurl_open ( & s - > hd , buf , AVIO_FLAG_READ_WRITE ,
& h - > interrupt_callback , NULL ) ;
if ( err < 0 )
goto fail ;
s - > hd = hd ;
}
cur_auth_type = s - > auth_state . auth_type ;
@ -163,8 +160,7 @@ static int http_open_cnx(URLContext *h)
if ( s - > http_code = = 401 ) {
if ( ( cur_auth_type = = HTTP_AUTH_NONE | | s - > auth_state . stale ) & &
s - > auth_state . auth_type ! = HTTP_AUTH_NONE & & attempts < 4 ) {
ffurl_closep ( & hd ) ;
s - > hd = NULL ;
ffurl_closep ( & s - > hd ) ;
goto redo ;
} else
goto fail ;
@ -172,8 +168,7 @@ static int http_open_cnx(URLContext *h)
if ( s - > http_code = = 407 ) {
if ( ( cur_proxy_auth_type = = HTTP_AUTH_NONE | | s - > proxy_auth_state . stale ) & &
s - > proxy_auth_state . auth_type ! = HTTP_AUTH_NONE & & attempts < 4 ) {
ffurl_closep ( & hd ) ;
s - > hd = NULL ;
ffurl_closep ( & s - > hd ) ;
goto redo ;
} else
goto fail ;
@ -181,8 +176,7 @@ static int http_open_cnx(URLContext *h)
if ( ( s - > http_code = = 301 | | s - > http_code = = 302 | | s - > http_code = = 303 | | s - > http_code = = 307 )
& & location_changed = = 1 ) {
/* url moved, get next */
ffurl_closep ( & hd ) ;
s - > hd = NULL ;
ffurl_closep ( & s - > hd ) ;
if ( redirects + + > = MAX_REDIRECTS )
return AVERROR ( EIO ) ;
/* Restart the authentication process with the new target, which
@ -194,9 +188,8 @@ static int http_open_cnx(URLContext *h)
}
return 0 ;
fail :
if ( hd )
ffurl_closep ( & hd ) ;
s - > hd = NULL ;
if ( s - > hd )
ffurl_closep ( & s - > hd ) ;
return AVERROR ( EIO ) ;
}
@ -676,6 +669,7 @@ URLProtocol ff_https_protocol = {
. url_seek = http_seek ,
. url_close = http_close ,
. url_get_file_handle = http_get_file_handle ,
. url_shutdown = http_shutdown ,
. priv_data_size = sizeof ( HTTPContext ) ,
. priv_data_class = & https_context_class ,
. flags = URL_PROTOCOL_FLAG_NETWORK ,