@ -113,6 +113,7 @@ typedef struct HTTPContext {
uint8_t * inflate_buffer ;
uint8_t * inflate_buffer ;
# endif /* CONFIG_ZLIB */
# endif /* CONFIG_ZLIB */
AVDictionary * chained_options ;
AVDictionary * chained_options ;
/* -1 = try to send if applicable, 0 = always disabled, 1 = always enabled */
int send_expect_100 ;
int send_expect_100 ;
char * method ;
char * method ;
int reconnect ;
int reconnect ;
@ -155,7 +156,7 @@ static const AVOption options[] = {
{ " auth_type " , " HTTP authentication type " , OFFSET ( auth_state . auth_type ) , AV_OPT_TYPE_INT , { . i64 = HTTP_AUTH_NONE } , HTTP_AUTH_NONE , HTTP_AUTH_BASIC , D | E , " auth_type " } ,
{ " auth_type " , " HTTP authentication type " , OFFSET ( auth_state . auth_type ) , AV_OPT_TYPE_INT , { . i64 = HTTP_AUTH_NONE } , HTTP_AUTH_NONE , HTTP_AUTH_BASIC , D | E , " auth_type " } ,
{ " none " , " No auth method set, autodetect " , 0 , AV_OPT_TYPE_CONST , { . i64 = HTTP_AUTH_NONE } , 0 , 0 , D | E , " auth_type " } ,
{ " none " , " No auth method set, autodetect " , 0 , AV_OPT_TYPE_CONST , { . i64 = HTTP_AUTH_NONE } , 0 , 0 , D | E , " auth_type " } ,
{ " basic " , " HTTP basic authentication " , 0 , AV_OPT_TYPE_CONST , { . i64 = HTTP_AUTH_BASIC } , 0 , 0 , D | E , " auth_type " } ,
{ " basic " , " HTTP basic authentication " , 0 , AV_OPT_TYPE_CONST , { . i64 = HTTP_AUTH_BASIC } , 0 , 0 , D | E , " auth_type " } ,
{ " send_expect_100 " , " Force sending an Expect: 100-continue header for POST " , OFFSET ( send_expect_100 ) , AV_OPT_TYPE_BOOL , { . i64 = 0 } , 0 , 1 , E } ,
{ " send_expect_100 " , " Force sending an Expect: 100-continue header for POST " , OFFSET ( send_expect_100 ) , AV_OPT_TYPE_BOOL , { . i64 = - 1 } , - 1 , 1 , E } ,
{ " location " , " The actual location of the data received " , OFFSET ( location ) , AV_OPT_TYPE_STRING , { . str = NULL } , 0 , 0 , D | E } ,
{ " location " , " The actual location of the data received " , OFFSET ( location ) , AV_OPT_TYPE_STRING , { . str = NULL } , 0 , 0 , D | E } ,
{ " offset " , " initial byte offset " , OFFSET ( off ) , AV_OPT_TYPE_INT64 , { . i64 = 0 } , 0 , INT64_MAX , D } ,
{ " offset " , " initial byte offset " , OFFSET ( off ) , AV_OPT_TYPE_INT64 , { . i64 = 0 } , 0 , INT64_MAX , D } ,
{ " end_offset " , " try to limit the request to bytes preceding this offset " , OFFSET ( end_off ) , AV_OPT_TYPE_INT64 , { . i64 = 0 } , 0 , INT64_MAX , D } ,
{ " end_offset " , " try to limit the request to bytes preceding this offset " , OFFSET ( end_off ) , AV_OPT_TYPE_INT64 , { . i64 = 0 } , 0 , INT64_MAX , D } ,
@ -1179,16 +1180,21 @@ static int http_connect(URLContext *h, const char *path, const char *local_path,
local_path , method ) ;
local_path , method ) ;
proxyauthstr = ff_http_auth_create_response ( & s - > proxy_auth_state , proxyauth ,
proxyauthstr = ff_http_auth_create_response ( & s - > proxy_auth_state , proxyauth ,
local_path , method ) ;
local_path , method ) ;
if ( post & & ! s - > post_data ) {
send_expect_100 = s - > send_expect_100 ;
if ( post & & ! s - > post_data ) {
/* The user has supplied authentication but we don't know the auth type,
if ( s - > send_expect_100 ! = - 1 ) {
* send Expect : 100 - continue to get the 401 response including the
send_expect_100 = s - > send_expect_100 ;
* WWW - Authenticate header , or an 100 continue if no auth actually
} else {
* is needed . */
send_expect_100 = 0 ;
if ( auth & & * auth & &
/* The user has supplied authentication but we don't know the auth type,
s - > auth_state . auth_type = = HTTP_AUTH_NONE & &
* send Expect : 100 - continue to get the 401 response including the
s - > http_code ! = 401 )
* WWW - Authenticate header , or an 100 continue if no auth actually
send_expect_100 = 1 ;
* is needed . */
if ( auth & & * auth & &
s - > auth_state . auth_type = = HTTP_AUTH_NONE & &
s - > http_code ! = 401 )
send_expect_100 = 1 ;
}
}
}
# if FF_API_HTTP_USER_AGENT
# if FF_API_HTTP_USER_AGENT