mirror of https://github.com/FFmpeg/FFmpeg.git
Compare commits
3 Commits
558994b051
...
d1f31a829d
| Author | SHA1 | Date |
|---|---|---|
|
|
d1f31a829d | |
|
|
1e56c51d3b | |
|
|
45fcd5567a |
|
|
@ -24,6 +24,7 @@
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "config_components.h"
|
#include "config_components.h"
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#if CONFIG_ZLIB
|
#if CONFIG_ZLIB
|
||||||
#include <zlib.h>
|
#include <zlib.h>
|
||||||
|
|
@ -214,7 +215,7 @@ static int http_open_cnx_internal(URLContext *h, AVDictionary **options)
|
||||||
const char *path, *proxy_path, *lower_proto = "tcp", *local_path;
|
const char *path, *proxy_path, *lower_proto = "tcp", *local_path;
|
||||||
char *env_http_proxy, *env_no_proxy;
|
char *env_http_proxy, *env_no_proxy;
|
||||||
char *hashmark;
|
char *hashmark;
|
||||||
char hostname[1024], hoststr[1024], proto[10];
|
char hostname[1024], hoststr[1024], proto[10], tmp_host[1024];
|
||||||
char auth[1024], proxyauth[1024] = "";
|
char auth[1024], proxyauth[1024] = "";
|
||||||
char path1[MAX_URL_SIZE], sanitized_path[MAX_URL_SIZE + 1];
|
char path1[MAX_URL_SIZE], sanitized_path[MAX_URL_SIZE + 1];
|
||||||
char buf[1024], urlbuf[MAX_URL_SIZE];
|
char buf[1024], urlbuf[MAX_URL_SIZE];
|
||||||
|
|
@ -224,7 +225,14 @@ static int http_open_cnx_internal(URLContext *h, AVDictionary **options)
|
||||||
av_url_split(proto, sizeof(proto), auth, sizeof(auth),
|
av_url_split(proto, sizeof(proto), auth, sizeof(auth),
|
||||||
hostname, sizeof(hostname), &port,
|
hostname, sizeof(hostname), &port,
|
||||||
path1, sizeof(path1), s->location);
|
path1, sizeof(path1), s->location);
|
||||||
ff_url_join(hoststr, sizeof(hoststr), NULL, NULL, hostname, port, NULL);
|
|
||||||
|
av_strlcpy(tmp_host, hostname, sizeof(tmp_host));
|
||||||
|
// In case of an IPv6 address, we need to strip the Zone ID,
|
||||||
|
// if any. We do it at the first % sign, as percent encoding
|
||||||
|
// can be used in the Zone ID itself.
|
||||||
|
if (strchr(tmp_host, ':'))
|
||||||
|
tmp_host[strcspn(tmp_host, "%")] = '\0';
|
||||||
|
ff_url_join(hoststr, sizeof(hoststr), NULL, NULL, tmp_host, port, NULL);
|
||||||
|
|
||||||
env_http_proxy = getenv_utf8("http_proxy");
|
env_http_proxy = getenv_utf8("http_proxy");
|
||||||
proxy_path = s->http_proxy ? s->http_proxy : env_http_proxy;
|
proxy_path = s->http_proxy ? s->http_proxy : env_http_proxy;
|
||||||
|
|
|
||||||
|
|
@ -1239,9 +1239,12 @@ start:
|
||||||
q = buf;
|
q = buf;
|
||||||
for (;;) {
|
for (;;) {
|
||||||
ret = ffurl_read_complete(rt->rtsp_hd, &ch, 1);
|
ret = ffurl_read_complete(rt->rtsp_hd, &ch, 1);
|
||||||
|
if (ret != 1) {
|
||||||
|
ret = (ret < 0) ? ret : AVERROR(EIO);
|
||||||
|
av_log(s, AV_LOG_WARNING, "Failed reading RTSP data: %s\n", av_err2str(ret));
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
av_log(s, AV_LOG_TRACE, "ret=%d c=%02x [%c]\n", ret, ch, ch);
|
av_log(s, AV_LOG_TRACE, "ret=%d c=%02x [%c]\n", ret, ch, ch);
|
||||||
if (ret != 1)
|
|
||||||
return ret < 0 ? ret : AVERROR(EIO);
|
|
||||||
if (ch == '\n')
|
if (ch == '\n')
|
||||||
break;
|
break;
|
||||||
if (ch == '$' && q == buf) {
|
if (ch == '$' && q == buf) {
|
||||||
|
|
@ -1271,6 +1274,7 @@ start:
|
||||||
if (!strncmp(buf1, "RTSP/", 5)) {
|
if (!strncmp(buf1, "RTSP/", 5)) {
|
||||||
get_word(buf1, sizeof(buf1), &p);
|
get_word(buf1, sizeof(buf1), &p);
|
||||||
reply->status_code = atoi(buf1);
|
reply->status_code = atoi(buf1);
|
||||||
|
p += strspn(p, SPACE_CHARS);
|
||||||
av_strlcpy(reply->reason, p, sizeof(reply->reason));
|
av_strlcpy(reply->reason, p, sizeof(reply->reason));
|
||||||
} else {
|
} else {
|
||||||
av_strlcpy(reply->reason, buf1, sizeof(reply->reason)); // method
|
av_strlcpy(reply->reason, buf1, sizeof(reply->reason)); // method
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue