Commit 039007c9 authored by Aman Gupta's avatar Aman Gupta

avformat/http: export http_version from response

Can be used by the api user to figure out what http features the server supports based on the response received.
Signed-off-by: 's avatarAman Gupta <aman@tmm1.net>
parent ac19e63b
...@@ -321,6 +321,9 @@ Sets the maximum delay in seconds after which to give up reconnecting ...@@ -321,6 +321,9 @@ Sets the maximum delay in seconds after which to give up reconnecting
@item mime_type @item mime_type
Export the MIME type. Export the MIME type.
@item http_version
Exports the HTTP response version number. Usually "1.0" or "1.1".
@item icy @item icy
If set to 1 request ICY (SHOUTcast) metadata from the server. If the server If set to 1 request ICY (SHOUTcast) metadata from the server. If the server
supports this, the metadata has to be retrieved by the application by reading supports this, the metadata has to be retrieved by the application by reading
......
...@@ -74,6 +74,7 @@ typedef struct HTTPContext { ...@@ -74,6 +74,7 @@ typedef struct HTTPContext {
char *http_proxy; char *http_proxy;
char *headers; char *headers;
char *mime_type; char *mime_type;
char *http_version;
char *user_agent; char *user_agent;
#if FF_API_HTTP_USER_AGENT #if FF_API_HTTP_USER_AGENT
char *user_agent_deprecated; char *user_agent_deprecated;
...@@ -144,6 +145,7 @@ static const AVOption options[] = { ...@@ -144,6 +145,7 @@ static const AVOption options[] = {
{ "multiple_requests", "use persistent connections", OFFSET(multiple_requests), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, D | E }, { "multiple_requests", "use persistent connections", OFFSET(multiple_requests), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, D | E },
{ "post_data", "set custom HTTP post data", OFFSET(post_data), AV_OPT_TYPE_BINARY, .flags = D | E }, { "post_data", "set custom HTTP post data", OFFSET(post_data), AV_OPT_TYPE_BINARY, .flags = D | E },
{ "mime_type", "export the MIME type", OFFSET(mime_type), AV_OPT_TYPE_STRING, { .str = NULL }, 0, 0, AV_OPT_FLAG_EXPORT | AV_OPT_FLAG_READONLY }, { "mime_type", "export the MIME type", OFFSET(mime_type), AV_OPT_TYPE_STRING, { .str = NULL }, 0, 0, AV_OPT_FLAG_EXPORT | AV_OPT_FLAG_READONLY },
{ "http_version", "export the http response version", OFFSET(http_version), AV_OPT_TYPE_STRING, { .str = NULL }, 0, 0, AV_OPT_FLAG_EXPORT | AV_OPT_FLAG_READONLY },
{ "cookies", "set cookies to be sent in applicable future requests, use newline delimited Set-Cookie HTTP field value syntax", OFFSET(cookies), AV_OPT_TYPE_STRING, { .str = NULL }, 0, 0, D }, { "cookies", "set cookies to be sent in applicable future requests, use newline delimited Set-Cookie HTTP field value syntax", OFFSET(cookies), AV_OPT_TYPE_STRING, { .str = NULL }, 0, 0, D },
{ "icy", "request ICY metadata", OFFSET(icy), AV_OPT_TYPE_BOOL, { .i64 = 1 }, 0, 1, D }, { "icy", "request ICY metadata", OFFSET(icy), AV_OPT_TYPE_BOOL, { .i64 = 1 }, 0, 1, D },
{ "icy_metadata_headers", "return ICY metadata headers", OFFSET(icy_metadata_headers), AV_OPT_TYPE_STRING, { .str = NULL }, 0, 0, AV_OPT_FLAG_EXPORT }, { "icy_metadata_headers", "return ICY metadata headers", OFFSET(icy_metadata_headers), AV_OPT_TYPE_STRING, { .str = NULL }, 0, 0, AV_OPT_FLAG_EXPORT },
...@@ -919,6 +921,12 @@ static int process_line(URLContext *h, char *line, int line_count, ...@@ -919,6 +921,12 @@ static int process_line(URLContext *h, char *line, int line_count,
} else { } else {
if (av_strncasecmp(p, "HTTP/1.0", 8) == 0) if (av_strncasecmp(p, "HTTP/1.0", 8) == 0)
s->willclose = 1; s->willclose = 1;
while (*p != '/' && *p != '\0')
p++;
while (*p == '/')
p++;
av_freep(&s->http_version);
s->http_version = av_strndup(p, 3);
while (!av_isspace(*p) && *p != '\0') while (!av_isspace(*p) && *p != '\0')
p++; p++;
while (av_isspace(*p)) while (av_isspace(*p))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment