diff options
author | Duncan Salerno <duncan.salerno@gmail.com> | 2012-09-22 21:17:36 +0100 |
---|---|---|
committer | Martin Storsjö <martin@martin.st> | 2012-09-28 00:09:38 +0300 |
commit | 8bd324e9e4b8ceb4d0fff7ebe3c56372949be759 (patch) | |
tree | 46fb04da8018bf53b89e52738690a9b366ae7ed0 | |
parent | bc66827fb1db24796cd1898f4e7dd7407a8c0aca (diff) | |
download | ffmpeg-8bd324e9e4b8ceb4d0fff7ebe3c56372949be759.tar.gz |
http: Increase buffer sizes to cope with longer URIs
Use the MAX_URL_SIZE define where applicable. Increase buffer
sizes for all buffers that need to fit a long pathname - buffers
that need to fit only the hostname (and other short strings, but
not the pathname - such as "headers" in http_connect) are kept
at 1024 bytes for now.
Also increase the max line length in http_read_header, since it
might need to contain a full url for Location: redirects.
Signed-off-by: Martin Storsjö <martin@martin.st>
-rw-r--r-- | libavformat/http.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/libavformat/http.c b/libavformat/http.c index 041a9b0ff6..43c6cbc032 100644 --- a/libavformat/http.c +++ b/libavformat/http.c @@ -32,8 +32,11 @@ /* XXX: POST protocol is not completely implemented because avconv uses only a subset of it. */ -/* used for protocol handling */ -#define BUFFER_SIZE 1024 +/* The IO buffer size is unrelated to the max URL size in itself, but needs + * to be large enough to fit the full request headers (including long + * path names). + */ +#define BUFFER_SIZE MAX_URL_SIZE #define MAX_REDIRECTS 8 typedef struct { @@ -97,8 +100,8 @@ static int http_open_cnx(URLContext *h) const char *path, *proxy_path, *lower_proto = "tcp", *local_path; char hostname[1024], hoststr[1024], proto[10]; char auth[1024], proxyauth[1024] = ""; - char path1[1024]; - char buf[1024], urlbuf[1024]; + char path1[MAX_URL_SIZE]; + char buf[1024], urlbuf[MAX_URL_SIZE]; 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; @@ -349,7 +352,7 @@ static inline int has_header(const char *str, const char *header) static int http_read_header(URLContext *h, int *new_location) { HTTPContext *s = h->priv_data; - char line[1024]; + char line[MAX_URL_SIZE]; int err = 0; s->chunksize = -1; |