aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDuncan Salerno <duncan.salerno@gmail.com>2012-09-22 21:17:36 +0100
committerMartin Storsjö <martin@martin.st>2012-09-28 00:09:38 +0300
commit8bd324e9e4b8ceb4d0fff7ebe3c56372949be759 (patch)
tree46fb04da8018bf53b89e52738690a9b366ae7ed0
parentbc66827fb1db24796cd1898f4e7dd7407a8c0aca (diff)
downloadffmpeg-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.c13
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;