http: Properly handle chunked transfer-encoding for replies to post data
authorMartin Storsjö <martin@martin.st>
Sun, 17 Jun 2012 18:19:41 +0000 (21:19 +0300)
committerMartin Storsjö <martin@martin.st>
Sun, 17 Jun 2012 19:56:56 +0000 (22:56 +0300)
Signed-off-by: Martin Storsjö <martin@martin.st>
libavformat/http.c

index 2b5f2cc..a494193 100644 (file)
@@ -353,6 +353,8 @@ static int http_read_header(URLContext *h, int *new_location)
     char line[1024];
     int err = 0;
 
+    s->chunksize = -1;
+
     for (;;) {
         if ((err = http_get_line(s, line, sizeof(line))) < 0)
             return err;
@@ -470,7 +472,6 @@ static int http_connect(URLContext *h, const char *path, const char *local_path,
         s->http_code = 200;
         return 0;
     }
-    s->chunksize = -1;
 
     /* wait for header */
     err = http_read_header(h, new_location);
@@ -513,14 +514,10 @@ static int http_read(URLContext *h, uint8_t *buf, int size)
     if (!s->hd)
         return AVERROR_EOF;
 
-    if (s->end_chunked_post) {
-        if (!s->end_header) {
-            err = http_read_header(h, &new_location);
-            if (err < 0)
-                return err;
-        }
-
-        return http_buf_read(h, buf, size);
+    if (s->end_chunked_post && !s->end_header) {
+        err = http_read_header(h, &new_location);
+        if (err < 0)
+            return err;
     }
 
     if (s->chunksize >= 0) {